2016-07-19 11 views
0

Ich möchte zwei CSV-Dateien in eine Orientdb-Datenbank importieren. Die erste ist die Spitze mit 1 Million Datensätzen. Das zweite sind die Kanten mit 59 Millionen DatensätzeOrientdb - CSV-Import - CSV-Importimport Edge

I zwei json Datei zu importieren:

VERTEX

{ 
    "source": { "file": { "path": "../csvs/metodo01/pesquisador.csv" } }, 
    "extractor": { "row": {} }, 
    "transformers": [ 
    { "csv": {} }, 
    { "vertex": { "class": "Pesquisador" } } 
    ], 
    "loader": { 
    "orientdb": { 
     "dbURL": "remote:localhost/dbCemMilM01", 
     "dbType": "graph", 
     "batchCommit": 1000, 
     "classes": [ 
     {"name": "Pesquisador", "extends": "V"} 
     ], "indexes": [ 
     {"class":"Pesquisador", "fields":["psq_id:integer"], "type":"UNIQUE" } 
     ] 
    } 
    } 
} 

Kante

{ 
    "config": { 
     "log": "info", 
      "parallel": false 
    }, 
    "source": { 
     "file": { 
      "path": "../csvs/metodo01/a10.csv" 
     } 
    }, 
    "extractor": { 
     "row": { 
     } 
    }, 
    "transformers": [{ 
     "csv": { 
      "separator": ",", 
      "columnsOnFirstLine": true, 
      "columns": ["psq_id_from:integer", 
      "pub_id_to:integer", 
      "ordem:integer"] 
     } 
    }, 
    { 
     "command": { 
      "command": "create edge PUBLICOU from (select from Pesquisador where psq_id = ${input.psq_id_from}) to (select from Publicacao where pub_id = ${input.pub_id_to}) set ordem = ${input.ordem} ", 
      "output": "edge" 
     } 
    }], 
    "loader": { 
     "orientdb": { 
      "dbURL": "remote:localhost/dbUmMilhaoM01", 
      "dbType": "graph", 
      "standardElementConstraints": false, 
      "batchCommit": 1000, 
      "classes": [{ 
       "name": "PUBLICOU", 
       "extends": "E" 
      }] 
     } 
    } 
} 

Im Verfahren der Orientdb schlägt Index verwendet, um beschleunigen Sie den Prozess.

Wie mache ich das?

Nur den Befehl erstellen Kante PUBLICOU von (wählen Sie aus Pesquisador wo psq_id = $ {input.psq_id_from}) zu (wählen Sie aus Publicacao wo pub_id = $ {input.pub_id_to}) set ordem = $ {input.ordem}

+0

Haben Sie offizielle Dokumente zur Indexierung gelesen: http://orientdb.com/docs/last/Indexes.html? –

Antwort

0

Um den Prozess zum Erstellen von Kanten zu beschleunigen, benötigen Sie möglicherweise Indizes für beide Eigenschaften Pesquisador.psq_id, die Sie bereits haben, und Publicacao.pub_id.

Ivan

0

Sie können Indizes direkt in der ETL-Konfiguration deklarieren. Beispiel aus DBpedia Importeur genommen:

"orientdb": { 
    "dbURL": "plocal:/temp/databases/dbpedia", 
    "dbUser": "importer", 
    "dbPassword": "IMP", 
    "dbAutoCreate": true, 
    "tx": false, 
    "batchCommit": 1000, 
    "wal" : false, 
    "dbType": "graph", 
    "classes": [ 
    {"name":"Person", "extends": "V" }, 
    {"name":"Customer", "extends": "Person", "clusters":8 } 
    ], 
    "indexes": [ 
    {"class":"V", "fields":["URI:string"], "type":"UNIQUE" }, 
    {"class":"Person", "fields":["town:string"], "type":"NOTUNIQUE" , 
     metadata : { "ignoreNullValues" : false } 
    } 
    ] 
} 

Weitere Informationen unter: http://orientdb.com/docs/2.2/Loader.html

0

den Ladeprozess Speedup mein Vorschlag ist in PLOCAL Modus zu arbeiten und dann Modus für die eigene db auf einen eigenständigen Orientdb Server.