我正在評估使用Neo4J社區2.1.3來存儲它們之間的概念和關係的列表。我正在嘗試使用Web界面中的Cypher將我的樣本測試數據(CSV文件)加載到Neo4J中,如聯機手冊中所述。Neo4J從Cypher加載CSV拋出「未知錯誤」或DeadlockDetected
我的數據看起來是這樣的:
concepts.csv
id,concept
1,tree
2,apple
3,grapes
4,fruit salad
5,motor vehicle
6,internal combustion engine
relationships.csv
sourceid,targetid
2,1
4,2
4,3
5,6
6,5
等等......在我的示例,我有〜17K概念和~16M的關係。按照手冊,我開始Neo4j的服務器,並進入到這個暗號:
LOAD CSV WITH HEADERS FROM "file:///data/concepts.csv" AS csvLine
CREATE (c:Concept { id: csvLine.id, concept: csvLine.concept })
這工作得很好,並加載我的概念。然後我試圖加載我的關係。
USING PERIODIC COMMIT
LOAD CSV WITH HEADERS FROM "file:///data/relationships.csv" AS csvLine
MATCH (c1:Concept { id: csvLine.sourceid }),(c2:Concept { id: csvLine.targetid })
CREATE (c1)-[:RELATED_TO]->(c2)
這將運行一個小時左右,但總是要麼停止:(!沒有其他信息)
- 「未知錯誤」,或
- 「Neo.TransientError.Transaction。 (鎖定客戶端[695])不能等待資源RWLock [RELATIONSHIP(572801),hash = 267423386],因爲=> LockClient < - [:HELD_BY] - RWLock [NODE(4145) ,hash = 1224203266] < - [:WAITING_FOR] - LockClient [691] < - [:HELD_BY] - RWLock [RELATIONSHI P(572801),hash = 267423386]「
加載後可能會停止200-300K關係。我已經對relationships.csv做了「sort | uniq」,所以我很確定沒有重複。我查看了數據/日誌中的日誌文件,但未發現錯誤消息。
有沒有人見過這個?順便說一句,我不介意失去一小部分關係,所以如果我能關閉ACID事務,我會很高興。我也想在這個階段避免編寫代碼(使用Java API)。我只是想加載我的數據來嘗試一下。無論如何要做到這一點?
我的完整數據集將包含數百萬個概念和數百萬個關係。有誰知道Neo4J是否可以處理這些數據?
謝謝。
我正在使用瀏覽器。我沒有創建索引。但是,即使沒有這些,我也可以通過id成功查詢這些概念,並遵循那些可以添加的關係。我可能會嘗試這個,並且明天也會嘗試。默認的定期提交不是1000嗎?感謝您的提示。 – alexycyap 2014-08-28 11:17:44
更新了我的回答 – 2014-08-28 15:46:11
我爲Concept(id)添加了一個唯一約束,它自動添加了一個索引,並使用了USING PERIODIC COMMIT 1000.結果是我所有的關係都加載得更快,沒有任何錯誤。不知道哪一位修好了,但謝謝你幫我解決這個問題。 – alexycyap 2014-09-01 01:50:58