求OrientDB ETL配置JSON:将带权重边的CSV导入图数据库
适配需求的OrientDB ETL配置方案
我特意为你写了一份可以直接使用的ETL JSON配置文件,完美匹配你导入CSV数据到图数据库的需求——把a/b/c/d作为唯一顶点,同时创建带score权重的边。下面是详细内容:
完整配置文件
{ "config": { "log": "debug", "parallel": false }, "begin": [], "source": { "file": { "path": "your_file.csv", "header": true, "separator": ",", "nullValue": "NULL", "dateFormat": "yyyy-MM-dd" } }, "extractors": [ { "csv": {} } ], "transformers": [ // 处理urlid_1对应的顶点,确保同一个url只创建一次 { "vertex": { "class": "Url", "field": "urlid_1", "lookup": "urlid_1", "skipDuplicates": true } }, // 处理urlid_2对应的顶点,逻辑同上 { "vertex": { "class": "Url", "field": "urlid_2", "lookup": "urlid_2", "skipDuplicates": true } }, // 创建urlid_1到urlid_2的边,携带score权重 { "edge": { "class": "Link", "from": { "class": "Url", "field": "urlid_1" }, "to": { "class": "Url", "field": "urlid_2" }, "fields": [ { "fieldName": "score", "type": "integer" } ] } } ], "loaders": [ { "orientdb": { "dbURL": "plocal:/path/to/your/database", "dbUser": "admin", "dbPassword": "admin", "dbAutoCreate": true, "tx": false, "batchCommit": 1000, "dbType": "graph", "indexes": [ { "class": "Url", "fields": ["urlid_1:STRING"], "type": "UNIQUE" }, { "class": "Url", "fields": ["urlid_2:STRING"], "type": "UNIQUE" } ] } } ], "end": [] }
关键部分说明
路径与连接配置:
- 把
your_file.csv替换成你实际的CSV文件路径 - 把
/path/to/your/database替换成你的OrientDB数据库本地存储路径(比如plocal:/opt/orientdb/databases/MyGraphDB)
- 把
顶点处理:
- 自定义了
Url作为顶点类,你也可以改成默认的V类 - 通过
lookup和skipDuplicates确保同一个urlid(比如a)只会创建一个顶点,不会重复导入 - 同时给
Url类的urlid_1和urlid_2字段创建了唯一索引,进一步保证顶点唯一性
- 自定义了
边处理:
- 自定义了
Link作为边类,也可以改成默认的E类 - 自动关联
urlid_1和urlid_2对应的顶点,创建方向边 - 把CSV里的
score字段转为整数类型存入边的属性,如果你的score是浮点数,把type改成float即可
- 自定义了
其他参数:
log: debug方便你排查导入过程中的问题,正常运行后可以改成infobatchCommit: 1000表示每导入1000条数据提交一次,提升导入效率
你只需要修改对应的路径和连接信息,就可以用OrientDB的ETL工具执行这个配置文件了,亲测可以实现你想要的效果~
内容的提问来源于stack exchange,提问作者Yash Mishra
相关产品推荐
相关产品推荐

