2017-01-30 7 views
2

Ich versuche, etwas Ordnung in meinem Raum Cosmos zugewiesen zu halten. Zur Zeit bin ich zu speichern Daten wie unten dargestellt:Wie man Gruppierungsregeln behandelt

.../webhdfs/v1/user/[ USERNAME ]/[ Fiware-Service ]/[ Fiware-ServicePath ]/TEMPORAL1_PhysicalTest/TEMPORAL1_PhysicalTest.txt 
.../webhdfs/v1/user/[ USERNAME ]/[ Fiware-Service ]/[ Fiware-ServicePath ]/TEMPORAL2_PhysicalTest/TEMPORAL2_PhysicalTest.txt 
.../webhdfs/v1/user/[ USERNAME ]/[ Fiware-Service ]/[ Fiware-ServicePath ]/TEMPORAL3_PhysicalTest/TEMPORAL3_PhysicalTest.txt 
.../webhdfs/v1/user/[ USERNAME ]/[ Fiware-Service ]/[ Fiware-ServicePath ]/TEMPORAL4_PhysicalTest/TEMPORAL4_PhysicalTest.txt 

Wo TEMPORAL1 ids und PhysicalTest jeweiligen Typen meiner Einheiten darstellt. jedoch, wird Ich mag die eigneten Mechanismus kennen die Daten unter (hypothetischen) Struktur speichern basiert:

.../webhdfs/v1/user/[ USERNAME ]/[ Fiware-Service ]/[ Fiware-ServicePath ]/physicaltests/TEMPORAL1_PhysicalTest.txt 
.../webhdfs/v1/user/[ USERNAME ]/[ Fiware-Service ]/[ Fiware-ServicePath ]/physicaltests/TEMPORAL2_PhysicalTest.txt 
.../webhdfs/v1/user/[ USERNAME ]/[ Fiware-Service ]/[ Fiware-ServicePath ]/physicaltests/TEMPORAL3_PhysicalTest.txt 
.../webhdfs/v1/user/[ USERNAME ]/[ Fiware-Service ]/[ Fiware-ServicePath ]/physicaltests/TEMPORAL4_PhysicalTest.txt 

Ich glaube, es durch Gruppierungsregeln angegangen werden könnten; aber nicht sicher.

Wenn das der Fall, dass ich meine grouping_rules.conf niedergelassen haben, wie unten ohne erfolgreiches Ergebnis, da ich mit einer Struktur endete als zunächst dargestellt:

{ 
    "grouping_rules": [ 
     { 
      "id": 1, 
      "fields": [ 
       "entityType" 
      ], 
      "regex": "PhysicalTest.*", 
      "destination": "PhysicalTest", 
      "fiware_service_path": "/[ Fiware-Service ]/physicaltests" 
     } 
    ] 
} 

Antwort

1

Eine solche Sache nicht getan werden kann. Cygnus speichert die Daten al HDFS Ordner nach diesem Muster (*):

/user/<username>/<service>/<service-path>/<entity-id>_<entity-type>/<entity-id>_<entity-type>.txt 

Die Struktur des <entity-id>_<entity-type>/<entity-id>_<entity-type>.txt Teil nicht geändert werden kann, in dem Sinne, immer die (Bekanntgegeben oder kartiert -Will erklärt später-) Einheit-ID und (notified oder mapped - wird später erklärt) - der Entitätstyp wird für die Zusammensetzung verwendet. Beachten Sie, dass eine solche Struktur die Entitäts-ID repliziert und die Verkettung sowohl in einem Unterordner als auch in einer Datei eingibt. Warum? Weil Hadoop mit Verzeichnissen und nicht mit Dateien arbeitet. Um eine Analyse für eine einzige Einheit zu ermöglichen, wurde eine solche Struktur in Cygnus entworfen.

Die obige Struktur kann mit Name Mappings geändert werden, eine Funktion, mit der Sie die Entitäts-ID und/oder den Entitätstyp (unter anderem) ändern können. Dies ist eine sehr mächtige Funktion, da Sie beispielsweise sagen können, dass "alle Entitäten des Typs Auto ihre IDs einer einzelnen ID meiner Wahl zugeordnet" sehen, was bedeutet, dass alle Entitäten in demselben Unterverzeichnis/derselben Datei gespeichert werden:

/user/<username>/<service>/<service-path>/<unique-entity-id>_<entity-type>/<unique-entity-id>_<entity-type>.txt 

Dies ist am nächsten, was Sie brauchen, denke ich.

Und was ist mit Grouping Rules Sie erwähnen? Sie waren etwas vor Namenszuordnungen. Sie erlaubten uns, die gesamte Verkettung von Einheit-ID und die Art zu ändern (was wir das „Ziel“ genannt), doch die erklärte Struktur wurde als gut gepflegt:

/user/<username>/<service>/<service-path>/<destination>/<destination>.txt 

Gruppierungsregeln sind deprecated für Namen Mappings.

(*) Alternativ können Sie den Wert <username> vermeiden, wenn Sie service_as_namespace = true konfigurieren. Dies ist nützlich, wenn Ihr FIWARE-Dienst mit einem gültigen HDFS-Benutzer übereinstimmt:

/user/<service>/<service-path>/<entity-id>_<entity-type>/<entity-id>_<entity-type>.txt 
Verwandte Themen