Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在neo4j中使用load csv添加关系需要花费大量时间_Neo4j_Cypher_Load Csv - Fatal编程技术网

在neo4j中使用load csv添加关系需要花费大量时间

在neo4j中使用load csv添加关系需要花费大量时间,neo4j,cypher,load-csv,Neo4j,Cypher,Load Csv,我正在使用load csv操作将关系加载到Neo4j中的graph db中。节点已创建。我要从四个不同的CSV文件中创建四种不同类型的关系(文件1-59关系、文件2-905关系、文件3-173000关系、文件4-100多万关系)。cypher查询执行得很好,但是文件1(59个关系)需要25秒才能执行,文件2需要6.98分钟,文件3在过去2小时内仍在运行。考虑到neo4j处理数百万关系的能力,我不确定这些执行时间是否正常。下面给出了我使用的一个cypher查询示例 load csv with he

我正在使用load csv操作将关系加载到Neo4j中的graph db中。节点已创建。我要从四个不同的CSV文件中创建四种不同类型的关系(文件1-59关系、文件2-905关系、文件3-173000关系、文件4-100多万关系)。cypher查询执行得很好,但是文件1(59个关系)需要25秒才能执行,文件2需要6.98分钟,文件3在过去2小时内仍在运行。考虑到neo4j处理数百万关系的能力,我不确定这些执行时间是否正常。下面给出了我使用的一个cypher查询示例

load csv with headers from
"file:/sample.csv"
as rels3
match (a:Index1 {Filename: rels3.Filename})
match (b:Index2 {Field_name: rels3.Field_name})
create (a)-[:relation1 {type: rels3.`relation1`}]->(b)
return a, b
“a”和“b”是我为两个预加载的节点类别创建的两个索引,希望加快查找操作

附加信息-节点数(a类)-1791 节点数(b类)-3341


是否有一种更快的方式来加载此文件?加载csv操作是否需要这么多时间?我哪里出错了吗?

Index1.Filename
Index2.Field\u name
上创建索引:

CREATE INDEX ON :Index1(Filename);
CREATE INDEX ON :Index2(Field_name);
验证这些索引是否联机:

:schema
通过将
PROFILE
添加到查询的开头并查看执行计划以查看是否正在使用索引,验证您的查询是否正在使用索引


更多信息

Index1.Filename
Index2.Field\u name
上创建索引:

CREATE INDEX ON :Index1(Filename);
CREATE INDEX ON :Index2(Field_name);
验证这些索引是否联机:

:schema
通过将
PROFILE
添加到查询的开头并查看执行计划以查看是否正在使用索引,验证您的查询是否正在使用索引


更多信息

在运行查询之前,我想先运行
explain
查看是否有任何警告。由于这些警告,我修复了许多问题。
(简单地在查询前附加
解释

另外,也许您可以删除return语句。查询完成后,您可以运行另一个来查看节点

我使用一个与您非常相似的查询,在大约54分钟内创建了大约2000万个关系


索引很重要,因为neo就是这样查找节点的。

在运行查询之前,我喜欢先运行
explain
查看是否有任何警告。由于这些警告,我修复了许多问题。
(简单地在查询前附加
解释

另外,也许您可以删除return语句。查询完成后,您可以运行另一个来查看节点

我使用一个与您非常相似的查询,在大约54分钟内创建了大约2000万个关系


索引很重要,因为neo就是这样找到节点的。

你好,威廉,我已经创建了索引,它们是在线的。现在,我将验证是否正在使用索引。是的,William,看起来索引没有被使用,因为它正在扫描数据库中的所有节点。您好William,我已经创建了索引,它们处于联机状态。现在我将验证是否正在使用索引。是的,William,看起来索引没有被使用,因为它正在扫描数据库中的所有节点。你好,Albert!你用什么样的硬件在不到一小时的时间里建立了2000万个关系?我正在尝试运行一个超过100000的查询,但过了一段时间它就会挂起。我运行Neo的桌面上有16千兆的RAM和一个i5四核处理器(3.2 ghz)。它是一个Intel Xenon E3-1220 4核@3.1Ghz,32GB的RAM,1TB的SSD。我注意到您的load查询中有一个return语句,这并不是必需的。看看移除它是否能加快速度。我不知道Neo是如何处理它的,但它可以将需要返回的节点保留在内存中,从而快速消耗内存——但这只是猜测。加载数据后,您始终可以查看数据。我发现查询实际上得到执行,但浏览器挂起。当我关闭页面并重新加载它时,我可以看到所有节点/关系都已成功创建。然后,当我编写一个像“match(n)return n limit 100000”这样简单的查询时,浏览器再次挂起。该查询适用于高达10000左右的限制,但一旦超过某个限制,浏览器将挂起。我尝试删除return子句,但控制台返回一个错误,表示匹配必须有return。我使用neo4j shell在屏幕会话中运行LOAD CSV查询(我已运行了超过12小时才能完成的查询)。我在linux上。你能用这个贝壳吗?然后,您可以使用浏览器计算加载的节点/关系。你好,阿尔伯特!你用什么样的硬件在不到一小时的时间里建立了2000万个关系?我正在尝试运行一个超过100000的查询,但过了一段时间它就会挂起。我运行Neo的桌面上有16千兆的RAM和一个i5四核处理器(3.2 ghz)。它是一个Intel Xenon E3-1220 4核@3.1Ghz,32GB的RAM,1TB的SSD。我注意到您的load查询中有一个return语句,这并不是必需的。看看移除它是否能加快速度。我不知道Neo是如何处理它的,但它可以将需要返回的节点保留在内存中,从而快速消耗内存——但这只是猜测。加载数据后,您始终可以查看数据。我发现查询实际上得到执行,但浏览器挂起。当我关闭页面并重新加载它时,我可以看到所有节点/关系都已成功创建。然后,当我编写一个像“match(n)return n limit 100000”这样简单的查询时,浏览器再次挂起。该查询适用于高达10000左右的限制,但一旦超过某个限制,浏览器将挂起。我尝试删除return子句,但控制台返回一个错误,表示匹配必须有return。我使用neo4j shell在屏幕会话中运行LOAD CSV查询(我已运行了超过12小时才能完成的查询)。我在linux上。你能用这个贝壳吗?然后可以使用浏览器计算加载的节点/关系。