You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

大规模TPCH SF100数据集创建LINEITEM_PARTSUPP关系失败求助

关于Neo4J EE 5.10导入SF100 TPCH数据集创建LINEITEM_PARTSUPP关系的问题

背景

我正在使用Neo4J EE 5.10,导入Scale Factor为100(即100GB)的TPCH数据集。已通过neo4j admin import成功导入所有节点,之后用以下格式创建节点间关系,除LINEITEM_PARTSUPP外,其余类型的关系创建均正常:

LOAD CSV WITH HEADERS FROM "file:///LINEITEM_ORDERS.csv" AS inputRow
CALL {
WITH inputRow
MATCH (l:LINEITEM { l_orderkey: toInteger(inputRow.l_orderkey), l_linenumber: toInteger(inputRow.l_linenumber)})
MATCH (o:ORDERS{o_orderkey: toInteger(inputRow.l_orderkey)})
WITH l,o,inputRow
MERGE (l)-[:LINEITEM_ORDERS]->(o) } IN TRANSACTIONS OF 5000 ROWS;

尝试的方法及遇到的问题

方法一:直接匹配复合唯一字段

LINEITEM_PARTSUPP关系需基于复合唯一字段(类似SQL主键)匹配,我先套用上述成功逻辑:

LOAD CSV WITH HEADERS FROM "file:///LINEITEM_PARTSUPP.csv" AS inputRow
CALL {
WITH inputRow
MATCH (l:LINEITEM { l_orderkey: toInteger(inputRow.l_orderkey), l_linenumber: toInteger(inputRow.l_linenumber)})
MATCH (ps:PARTSUPP { ps_partkey: toInteger(inputRow.l_partkey), ps_suppkey: toInteger(inputRow.l_suppkey)})
WITH l,ps
MERGE (l)-[:LINEITEM_PARTSUPP]->(ps) } IN TRANSACTIONS OF 5000 ROWS;

问题:耗时极长,24小时仅创建2500条关系,而该SF100数据集此类关系有数百万条。

方法二:生成复合超级键匹配

为PARTSUPP节点生成复合超级键字段:

MATCH (n:PARTSUPP)
CALL { WITH n
SET n.superkey=n.ps_partkey*100000000+n.ps_suppkey
} IN TRANSACTIONS OF 10000 ROWS;

修改关系创建查询如下:

LOAD CSV WITH HEADERS FROM "file:///LINEITEM_PARTSUPP.csv" AS inputRow
CALL {
WITH inputRow
MATCH (l:LINEITEM { l_orderkey: toInteger(inputRow.l_orderkey), l_linenumber: toInteger(inputRow.l_linenumber)})
MATCH (ps:PARTSUPP { superkey: toInteger(inputRow.l_partkey)*100000000+toInteger(inputRow.l_suppkey)})
WITH l,ps
MERGE (l)-[:LINEITEM_PARTSUPP]->(ps) } IN TRANSACTIONS OF 10000 ROWS;

问题:已提交的读取量持续增长,但无提交写入,未创建任何关系。

疑问

由于数据集结构限制(需保持原有结构),无法使用neo4j admin import导入关系。请问我遗漏了什么?是否有其他内存友好的方法可解决此问题?

内容的提问来源于stack exchange,提问作者Codrin Esanu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 12:41:03