将大型 csv 文件加载到 neo4j 中

2023-12-01

我想加载一个 csv,其中包含维基百科类别 rels.csv 之间的关系(类别之间有 400 万个关系)。我尝试通过更改以下参数值来修改设置文件:

dbms.memory.heap.initial_size=8G 
dbms.memory.heap.max_size=8G
dbms.memory.pagecache.size=9G

我的查询如下:

USING PERIODIC COMMIT 10000
LOAD CSV FROM 
"https://github.com/jbarrasa/datasets/blob/master/wikipedia/data/rels.csv?raw=true" AS row
    MATCH (from:Category { catId: row[0]})
    MATCH (to:Category { catId: row[1]})
    CREATE (from)-[:SUBCAT_OF]->(to)

此外,我在 catId 和 catName 上创建了索引。 尽管进行了所有这些优化,查询仍在运行(从昨天开始)。

您能否告诉我是否需要进行更多优化来加载此 CSV 文件?


这太花时间了。 4 百万关系应该需要几分钟甚至几秒钟。

我刚刚在 321 秒内加载了您共享的链接中的所有数据(Cats-90 和 Rels-231),而我的个人笔记本电脑上的内存设置还不到您的一半。

dbms.memory.heap.initial_size=1G  
dbms.memory.heap.max_size=4G 
dbms.memory.pagecache.size=1512m

And this is not the limit, Can be improved further. enter image description here

稍微修改一下查询:LIMIT 增加 10 倍

USING PERIODIC COMMIT 100000
LOAD CSV FROM 
"https://github.com/jbarrasa/datasets/blob/master/wikipedia/data/rels.csv?raw=true" AS row
    MATCH (from:Category { catId: row[0]})
    MATCH (to:Category { catId: row[1]})
    CREATE (from)-[:SUBCAT_OF]->(to)

一些建议:

  1. 在用于搜索节点的字段上创建索引。 (加载数据时无需在其他字段上建立索引,可以稍后完成,它会消耗不必要的内存)

  2. 不要将最大堆大小设置为充满系统 RAM。将其设置为 RAM 的 50%。

  3. 增加LIMIT:如果增加堆(RAM),除非使用它,否则不会提高性能。当你设置LIMIT到 10,000 则堆的大部分将是空闲的。我能够使用 4G 堆加载限制为 100,000 的数据。您可以设置 200,000 或更多。如果它导致任何问题,请尝试减少它。
  4. 重要的确保在更改/设置配置后重新启动 Neo4j。 (如果尚未完成)。

下次运行加载 CSV 查询时,不要忘记删除以前的数据,因为它会创建重复项。

NOTE:我将文件下载到笔记本电脑并使用相同的文件,因此没有下载时间。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将大型 csv 文件加载到 neo4j 中 的相关文章

  • SET 查询中“在此上下文中无效使用聚合函数”(Neo4j)

    我想知道为什么这被认为是 Neo4j 的 Cypher 中聚合函数的无效使用 MATCH p Project EMPLOYS n Person SET p youngest MIN n age 虽然以下被认为是有效的用例 MATCH p P
  • 使用 py2neo 在 neo4j 上查询写入性能

    目前 我正在努力寻找一种高性能的方法 使用 py2neo 运行多个查询 我的问题是 python 中有一大堆需要写入 neo4j 的写入查询 我现在尝试了多种方法来解决这个问题 对我来说最好的工作方法如下 from py2neo impor
  • 使用 Neo4J 和 Spring Data 按 ID 创建关系

    我定义了一个简单的节点对象 如下所示 Node product public class Product Id private String sku Relationship type SOLD BY private Set
  • Bulbflow:neo4jserver Graph 和 neo4jserver Neo4jclient 之间的区别

    我现在正在尝试学习如何连接到 Neo4j 服务器并使用 Python 中的 Bulbflow 在其上运行 Cypher 查询 我不明白的是连接到 neo4j 服务器的两种可能性之间的区别 1 Graph http bulbflow com
  • Neo4j 客户端使用“DateTime?”展开

    我目前正在尝试展开具有 日期时间 的 TravelEdges 列表 但我不断收到以下错误 CypherTypeException 类型不匹配 需要一个地图 但是字符串 2018 05 21T08 38 00 我目前正在使用最新版本的 neo
  • 一起使用 MongoDB 和 Neo4j

    我正在开始一个新项目 我正在考虑使用 MongoDB 作为文档存储工具 使用 Neo4j 作为映射文档之间关系的机制 然后我想通过 REST API 公开查询结果 人们会说这样做的优点和缺点是什么 是否有更好的方法可以使用不同的 NoSQL
  • plesk 上的 docker 中的 Neo4j(3.4.17、3.5.13、4.0.0)不使用 /ssl 中提供的 SSL 证书,而是尝试删除它们并进行自己的自签名

    此配置在某些时候对我有用 但由于没有启用自动续订 在短暂的 VPS 暂停后就停止了 根据文档 我在一个文件夹中提供了 neo4j cert 和 neo4j key 然后将其安装在 ssl 的容器上 不幸的是 neo4j 将停留在 清理自生成
  • Neo4j 的数据库级验证

    我使用 Neo4j 作为我的图形数据库 假设我想限制用户名字段的长度小于10 有没有办法在数据库级别施加这样的约束 现在 您必须在应用程序级别上执行此操作 或者通过注册一个事务提交挂钩来检查该属性字段是否符合特定标准 See http do
  • 如何以最佳方式将 SQL 查询转换为 cypher?

    我是 neo4j 的新手 使用 3 0 版本 我有一个巨大的事务数据集 我将其转换为图形模型 我需要将下面的 SQL 查询转换为 cypher create table calc base as select a ticket id tic
  • Cypher - 匹配两个不同的可能路径并返回两者

    我有一个数据集 我在这里作为示例表示 http console neo4j org id 3dq78v http console neo4j org id 3dq78v 我想要做的是对于图表中的每个 Z 节点 该示例只有一个 但我有很多 我
  • 使用cypher删除neo4j中的所有节点和关系超出堆空间

    我一直在尝试按照 neo4j google 组和其他在线来源的建议运行此查询 开始 n 节点 匹配 n r 其中 ID n gt 0 删除n r 为了删除测试之间的所有节点和关系 当我从控制台执行此操作时 我用完了 java 堆空间 当我从
  • Neo4j:插入 7k 节点很慢(Spring Data Neo4j / SpringRestGraphDatabase)

    我正在构建一个应用程序 我的用户可以在其中管理字典 其中一项功能是上传文件以初始化或更新词典的内容 我首先关注的结构部分是Dictionary CONTAINS gt Word 从一个空数据库 Neo4j 1 9 4 但也尝试过 2 0 0
  • 为什么MongoDB不同的查询计划显示不同的nReturned值?

    我有一个收藏faults in my MongoDB每个文档都有这些字段的数据库 rack name timestamp 只是为了测试和比较性能 我创建了这两个索引 rack gt rack name 1 and time gt times
  • Neo4j 在 Cypher 查询运行中仅使用一个核心

    当我在 UI 中运行 Cypher 查询时 服务器中只有一个核心正在运行 查询会卡住或响应非常慢 我使用 Neo4j 3 0 7 社区 有人知道我可以使用所有核心进行哪些调整吗 单个 Cypher 查询仅限于单个线程 看到这个tweet h
  • MYSQL插入GB大小的巨大SQL文件

    我正在尝试创建 Wikipedia DB 副本 大约 50GB 但在处理最大的 SQL 文件时遇到问题 我使用 linux split 实用程序将 GB 大小的文件拆分为 300 MB 的块 例如 split d l 50 enwiki 2
  • 有没有办法从密码结果中删除 _id _type

    我使用 apoc convert toTree 过程将查询结果转换为树 然后过滤结果以仅获取几个属性 但是 在生成的有效负载中 我得到了两个无法删除的属性 id 和 type 这是我的查询 我应该只获取 prefLabel 和 uri MA
  • 参数映射不能用于 MERGE 模式

    我收到错误参数映射不能在合并模式中使用 我如何解决此错误 我正在使用下面的代码 我非常感谢任何帮助 提前致谢 MERGE u Person names RETURN u and data2 names name Keanu Reeves1
  • 如何在 Gremlin 中查找公共顶点数并对结果进行排序?

    我的架构有两种类型的节点 node1 学生 id为主键 节点2 技能 技能名称为主键 他们之间的关系是HAS SKILL 我的用例 对于给定的学生 Id 我需要获取技能最匹配的相似用户 技能计数和常用技能列表 我尝试过的查询 g V has
  • 如何结识有相同兴趣的朋友的朋友?

    交朋友的朋友很容易 我得到了这个 看起来效果很好 g v 1 in FRIEND in FRIEND filter it g v 1 但我想做的只是结交有相同兴趣的朋友的朋友 下面我希望 Joe 被推荐为 Moe 而不是 Noe 因为他们没
  • 数据库分区 - 水平与垂直 - 规范化和行拆分之间的区别?

    我试图理解不同的概念数据库分区这就是我的理解 水平分区 分片 将表拆分为不同的表 其中将包含初始表中的行的子集 如果按大陆拆分用户表 我见过很多这样的示例 例如北美的子表 欧洲的另一个子表 ETC 每个分区位于不同的物理位置 理解 机器 据

随机推荐

  • Javascript:“新日期(日期字符串)”与“新日期(年,月,日)”之间的区别

    参考这个问题的已接受答案如何在 JavaScript 中获取两个日期之间的天数 我明白了 在函数中parseDate function parseDate str var mdy str split return new Date mdy
  • 构造函数中的 C++ 引用

    我有一个类 其构造函数采用对字符串的 const 引用 该字符串充当对象的名称 因此在类实例的整个生命周期中都需要该字符串 现在想象一下如何使用这个类 class myclass public myclass const std strin
  • 尝试生成 9 位数字,每个数字都唯一

    我正在尝试获取 9 位数字 这些数字都有唯一的数字 我的第一种方法似乎有点太复杂 写起来很乏味 include
  • Facebook Open Graph 单页应用程序

    我使用主干js构建了一个单页面应用程序 我对各种应用程序状态和动态内容 例如书籍 有单独的骨干 url 路由 但本质上 Facebook 只会看到索引页面 以下问题似乎提供了一种有趣的方法来为动态内容提供物理开放图 URL 同一页面上有多个
  • 通过命令行调用laravel控制器

    在 kohana 框架中 我可以使用命令行通过命令行调用控制器 php5 index php uri controller method var1 var2 是否可以通过 cli 在 Laravel 5 中调用我想要的控制器 如果是 该怎么
  • 通过 BigCommerce API 访问 Google 购物字段

    我正在与第三方零件供应商创建自定义集成 以在 BigCommerce 的库存中创建产品 我需要能够为导入的产品打开 Google 购物并添加 MPN 和类别 但我不知道如何在 API 中修改它 如果有人有任何反馈 请告诉我 因此 在联系 B
  • 更新对象的嵌套数据数组(Redux)

    我在更新不可变的 redux 和相当嵌套的数据时遇到问题 这是我的数据结构和我想要更改的内容的示例 如果有人可以向我展示使用 ES6 和扩展运算符访问此更新的模式 我将不胜感激 const formCanvasInit id guid fi
  • 如何正确关闭客户端和服务器中的套接字(python)

    我正在用 python 编写 2 个脚本 客户端 py 服务器 py 客户端和服务器之间有一个套接字 场景是这样的 我有一个客户端要求关闭程序 因此它应该通知服务器 然后服务器将通知另一个客户端 因此我需要关闭从客户端 1 到服务器的套接字
  • Angular2 HTTP 使用 observables 订阅显示数据未定义

    我不知道我做错了什么 但不知怎的 我无法读取数据 尽管数据来自服务器响应 甚至当我放置控制台时数据也显示在服务 extractData 方法中 但是在订阅函数内的组件中 它给了我未定义的信息 帮我看看我做错了什么 我假设这是异步的问题 但是
  • 使用 WCF 服务返回 MembershipUser

    我有 WCF 服务从 ActiveDirectory 获取用户 我从请求 用户名 接收参数并使用 MembershipUser 属性创建响应 由于某种原因 联系变得紧密 服务操作找到用户并成功创建响应 执行行时 返回响应 我在客户端遇到异常
  • 无法使用 CreateJS 预加载和显示 SVG

    我正在尝试预加载一组 SVG 对象并使用 CreateJS PreloadJS 显示它们 到目前为止 我能够在不预加载的情况下显示 SVG 对象 但是一旦我使用 PreloadJS 中的 LoadQueue 我就无法让我的示例工作 有人知道
  • 在tableview中延迟加载图像

    我试图以惰性模式加载我的 uitableviewcells 的图像 我试图以最简单的方式做到这一点 我看到了很多例子 但它们超出了我的目的 这就是我目前正在做的事情 但它不起作用 Configure the cell Info info s
  • 创建 TRESTClient 时出错:“没有注册具有 guid [{}] 接口的对等点”

    我已经创建了我的类来使用 REST 我在运行时遇到 TRESTClient 组件问题 TFrwWebServiceREST class TInterfacedObject IRESTWebServiceProxy private FClie
  • 仅从 DateTime 对象获取日期或时间

    我有一个DateTime具有日期和时间的实例 如何仅提取日期或仅提取时间 var day value Date a DateTime that will just be whole days var time value TimeOfDay
  • 我应该如何在 MongoDB 中实现这个模式?

    我正在尝试编写一个跟踪脚本 但在弄清楚数据库应该如何工作方面遇到了麻烦 在 MySQL 中 我创建一个类似于以下的表 User username name string Campaign title string description s
  • 最多应用一次交换操作以获得严格递增序列

    我正在网上的各个网站上做一些 DS A 问题进行练习 我遇到了这个问题 给定一个非负整数数组 您可以从此数组中选择任何数字并交换其中的任意两位数字 如果在交换操作之后数字包含前导零 则可以省略它们并且不考虑它们 您的任务是检查是否可以最多应
  • 如何找到 tibble 列中最长的重复序列?

    我更新了我的问题 因为我的输出表还需要一列 我有以下内容 library tibble my tbl lt tribble year event id winner id 2011 A 4322 2012 A 4322 2013 A 432
  • 外部源文件中不会发生重新定义错误

    下面是我的代码 main c int t double t 0 int main return 0 我们可以看到上面的代码没有编译 gcc 抛出一个错误 t redefinition different basic types 这很公平 但
  • 为什么我的 UITableView 在 5 行之后重复行?

    我的数据库中有 7 行 我确认所有数据都通过 NSLog postArray 成功传输到 iOS 端 它给出了 7 但是 当我运行我的应用程序时 它只会显示前 5 行 然后是前 2 行 而不是第 6 行和我的数据库中的第七行 另外 当我 N
  • 将大型 csv 文件加载到 neo4j 中

    我想加载一个 csv 其中包含维基百科类别 rels csv 之间的关系 类别之间有 400 万个关系 我尝试通过更改以下参数值来修改设置文件 dbms memory heap initial size 8G dbms memory hea