【问题标题】:Import a large (7 million rows) csv file into Neo4j faster更快地将大型(700 万行)csv 文件导入 Neo4j
【发布时间】:2016-06-02 20:53:05
【问题描述】:

这是我在stackoverflow中的第一个问题。

我想在 Neo4j 数据库中导入一个 700 万行的文件。

每一行都有一个节点的信息,一个时间值(已经在数据库中)。 对于每一行,我需要在数据库中找到一个现有节点和一个现有时间值,然后在它们之间创建一个关系,并在其中相应地添加值。

我想要一些建议来提高导入速度。架构是:

ON :Day(value)        ONLINE  
ON :Month(value)      ONLINE  
ON :SEGMENT(LinkName) ONLINE  
ON :Timeperiod(value) ONLINE  
ON :Year(value)       ONLINE  

导入大约 200 万行需要 24 小时。 (其中的 1/3)我希望导入 50 个类似的文件,因此我认为我需要更好的代码来提高速度。 分配的内存为 1GB(默认设置),硬盘为 SSD。

非常感谢!

USING PERIODIC COMMIT 1000
LOAD CSV WITH HEADERS FROM "file:///../../Python/MAR15.csv" AS row WITH row
WHERE row.LinkRef IS NOT NULL
WITH row, toInt(SUBSTRING(row.Date, 0, 4)) AS y
MATCH (year:Year {value: y})
WITH row, year, toInt(SUBSTRING(row.Date, 5, 2)) AS m
MATCH (year)-[:CONTAINS]->(month:Month {value: m})
WITH row, month, toInt(SUBSTRING(row.Date, 8, 2)) AS d
MATCH (month)-[:CONTAINS]->(day:Day {value: d})
WITH row, day, toInt(row.TimePeriod) AS t
MATCH (day)-[:CONTAINS]->(timeperiod:Timeperiod {value: t}) 
##96 period per day, each period is 15 minutes
WITH row, timeperiod
MATCH(segment:SEGMENT {LinkRef: row.LinkRef})


CREATE (segment)-[trafficdata:TrafficData {
    AverageJT: row.AverageJT,
    AverageSpeed: row.AverageSpeed,
    Flow: row.Flow,
    DataQuality: row.DataQuality
    }]->(timeperiod)
SET segment.LinkLength = row.LinkLength;

【问题讨论】:

  • 你看过什么?如果您看过这些,请将它们添加到您的问题中?也许有趣? jexp.de/blog/2013/05/on-importing-data-in-neo4j-blog-series 还有:stackoverflow.com/questions/34487313/…。另外: - 猜测:google.co.uk/…
  • 每秒大约 23 条记录?有趣(令人失望)吗?我希望有人可以帮助改进它?我希望速度提高 1 到 2 个数量级?
  • 嗨瑞恩,感谢您的建议。对于第二个链接中的视频。我已经学会了在唯一的 LinkRef 上创建约束。现在速度快多了。 CREATE CONSTRAINT ON (segment:SEGMENT) ASSERT segment.LinkRef 是唯一的

标签: csv neo4j


【解决方案1】:

按照 Ryan 的建议,我通过以下代码提高了查询速度:

CREATE CONSTRAINT ON (segment:SEGMENT) ASSERT segment.LinkRef IS UNIQUE

由于每个 SEGMENT 都有一个唯一标识符 (LinkRef),因此系统能够更快地执行 MATCH 检查。 添加此约束后,系统每分钟能够处理超过 10,000 个输入。

【讨论】:

    猜你喜欢
    • 2015-09-08
    • 1970-01-01
    • 2013-10-15
    • 2012-09-19
    • 1970-01-01
    • 1970-01-01
    • 2016-04-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多