【发布时间】:2015-06-21 17:47:06
【问题描述】:
我想将一个非常简单的 csv 有向图文件导入 OrientDB。具体来说,该文件是来自 SNAP 集合https://snap.stanford.edu/data/roadNet-PA.html 的 roadNet-PA 数据集。文件的第一行如下:
# Directed graph (each unordered pair of nodes is saved once)
# Pennsylvania road network
# Nodes: 1088092 Edges: 3083796
# FromNodeId ToNodeId
0 1
0 6309
0 6353
1 0
6353 0
6353 6354
只有一种类型的顶点(道路交叉口)并且边没有信息(我想 OrientDB 轻量边是最好的选择)。另请注意,顶点之间用制表符隔开。
我尝试创建一个简单的 etl 来导入文件,但没有成功。这是etl:
{
"config": {
"log": "debug"
},
"source" : {
"file": { "path": "/tmp/roadNet-PA.csv" }
},
"extractor": { "row": {} },
"transformers": [
{ "csv": { "separator": " ", "skipFrom": 1, "skipTo": 4 } },
{ "vertex": { "class": "Intersection" } },
{ "edge": { "class": "Road" } }
],
"loader": {
"orientdb": {
"dbURL": "remote:localhost/roads",
"dbType": "graph",
"classes": [
{"name": "Intersection", "extends": "V"},
{"name": "Road", "extends": "E"}
], "indexes": [
{"class":"Intersection", "fields":["id:integer"], "type":"UNIQUE" }
]
}
}
}
etl 可以工作,但它没有按我的预期导入文件。我想问题出在变压器上。我的想法是逐行读取 csv 并创建连接两个顶点的边,但我不确定如何在 etl 文件中表达这一点。有什么想法吗?
【问题讨论】:
标签: graph import etl orientdb nosql