我是 Neo4j 的新手,目前我正在尝试将交友网站制作为 POC。我有 4GB 的输入文件,看起来像下面的格式。
这包含 viewerId(male/female),viewedId 是他们查看过的 id 列表。根据这个历史文件,当任何用户上线时,我需要给出推荐。
输入文件:
viewerId viewedId
12345 123456,23456,987653
23456 23456,123456,234567
34567 234567,765678,987653
:
对于这个任务,我尝试了以下方式,
USING PERIODIC COMMIT 10000
LOAD CSV WITH HEADERS FROM "file:/home/hadoopuser/Neo-input " AS row
FIELDTERMINATOR '\t'
WITH row, split(row.viewedId, ",") AS viewedIds
UNWIND viewedIds AS viewedId
MERGE (p2:Persons2 {viewerId: row.viewerId})
MERGE (c2:Companies2 {viewedId: viewedId})
MERGE (p2)-[:Friends]->(c2)
MERGE (c2)-[:Sees]->(p2);
而我的 Cypher 查询来获得结果是,
MATCH (p2:Persons2)-[r*1..3]->(c2: Companies2)
RETURN p2,r, COLLECT(DISTINCT c2) as friends
要完成这项任务,需要 3 天时间。
我的系统配置:
Ubuntu -14.04
RAM -24GB
Neo4j 配置:
neo4j.properties:
neostore.nodestore.db.mapped_memory=200M
neostore.propertystore.db.mapped_memory=2300M
neostore.propertystore.db.arrays.mapped_memory=5M
neostore.propertystore.db.strings.mapped_memory=3200M
neostore.relationshipstore.db.mapped_memory=800M
neo4j-wrapper.conf
wrapper.java.initmemory=12000
wrapper.java.maxmemory=12000
为了减少时间,我从以下链接 https://github.com/jexp/batch-import在互联网上搜索并获得一个想法,例如 Batch importer
在那个链接中,他们有 node.csv、rels.csv 文件,它们导入到 Neo4j 中。我不知道他们如何创建 node.csv 和 rels.csv 文件,他们正在使用哪些脚本以及所有这些文件。
谁能给我示例脚本来为我的数据制作 node.csv 和 rels.csv 文件?
或者您能提供任何建议以加快导入和检索数据的速度吗?
提前致谢。