Конфигурация ETL JSON с взвешенными ребрами OrientDB - PullRequest
0 голосов
/ 25 мая 2018

Я использую модуль OrientDB ETL для импорта данных из файла CSV в базу данных графа.Формат файла CSV следующий:

urlid_1,urlid_2,score
a,b,10
a,c,20
a,d,30
b,a,40
b,c,50
b,d,60
c,a,70
c,b,80
c,d,90
d,a,100
d,b,110
d,c,120

Я хочу, чтобы после импорта этого файла в orientdb каждый из a, b, c и d сохранялся каквершина в классе и создается ребро, начиная с urlid_1 до urlid_2 с весом ребра в качестве соответствующего score в файле csv.

Может кто-нибудь помочь мне с файлом конфигурации (JSON) дляETL ??

Я испробовал предложенное здесь решение: Самый простой способ импортировать простой CSV-файл в граф с помощью OrientDB ETL , но не получил ожидаемых результатов.

1 Ответ

0 голосов
/ 05 июня 2018

Попробуйте это:

Для импорта данных:

data_2.csv

id
a
b
c
d

import_2.json

{
  "source" : {
    "file": { "path": "data_2.csv" }
  },
  "extractor" : {
    "csv": {}
  },
   "transformers": [
        { "vertex": { "class": "Test" } }
    ],
  "loader" : {
    "orientdb": {
      "dbURL": "plocal:your_path",
      "dbUser": "your_user",
      "dbPassword": "your_pwd",
      "serverUser": "your_user",
      "serverPassword": "your_pwd",
      "dbType": "graph",
      "classes": [
            {"name": "Test", "extends":"V"},
            ]
    }
  }
}

Для создания ребер:

data.csv

urlid_1,urlid_2,score
a,b,10
a,c,20
a,d,30
b,a,40
b,c,50
b,d,60
c,a,70
c,b,80
c,d,90
d,a,100
d,b,110
d,c,120

import.json

{
  "source" : {
    "file": { "path": "data.csv" }
  },
  "extractor" : {
    "csv": {}
  },
   "transformers": [
        { "command":
            { "command": "CREATE EDGE link FROM (SELECT FROM Test where id= "${input.urlid_1}") TO (SELECT FROM Test where id = "${input.urlid_2}") set score=${input.score}"}  
        }
    ],
  "loader" : {
    "orientdb": {
      "dbURL": "plocal:your_path",
      "dbUser": "your_user",
      "dbPassword": "your_pwd",
      "serverUser": "your_user",
      "serverPassword": "your_pwd",
      "dbType": "graph",
      "classes": [
            {"name": "link", "extends":"E"}
            ]
    }
  }
}

Надеюсь, это поможет

С уважением

...