Я новичок в Neo4j. В настоящее время я пытаюсь создать сайт знакомств в качестве POC. У меня есть 4 ГБ входного файла, который выглядит как формат ниже.
Это содержит viewerId (мужской/женский), viewId, который представляет собой список идентификаторов, которые они просмотрели. Основываясь на этом файле истории, мне нужно дать рекомендацию, когда какой-либо пользователь выходит в сеть.
Входной файл:
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);
И запрос My 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
По той ссылке у них есть файлы node.csv, rels.csv, они импортированы в Neo4j. Я не понимаю, как они создают файлы node.csv и rels.csv, какие сценарии они используют и все такое.
Может ли кто-нибудь дать мне пример сценария для создания файлов node.csv и rels.csv для моих данных?
Или вы можете дать какие-либо предложения, чтобы ускорить импорт и извлечение данных?
Заранее спасибо.