1. 程式人生 > 其它 >使用batch-import工具向neo4j中匯入海量資料【轉】

使用batch-import工具向neo4j中匯入海量資料【轉】

轉載備忘
連結:https://www.yisu.com/zixun/496254.html


這篇文章給大家分享的是有關資料庫中怎麼使用batch-import工具向neo4j中匯入海量資料的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

1、batch-import原始專案地址:https://github.com/jexp/batch-import

這個工具是neo4j的作者之一Michael Hunger所編寫,是在neo4j自帶批量匯入工具基礎之上做的進一步優化,但是它在匯入.gz壓縮檔案時,會出現關係無法匯入的情況,所以如果要使用.gz壓縮包進行匯入,請使用我修改過的版本:

https://github.com/mo9527/batch-import

2、環境準備

jdk:7以上

記憶體:8G以上,匯入資料多的話會非常消耗記憶體,我自己匯入的是將近1.5億節點,3億關係,用的是32G記憶體

3、匯入步驟

a)從github上clone下程式碼,並使用maven進行打包,打完包後的jar檔案,與專案本身的依賴jar一起放到lib資料夾下,batch.properties檔案和執行匯入的指令碼放在lib同級目錄下,***的目錄結構如下圖:

資料庫中怎麼使用batch-import工具向neo4j中匯入海量資料

ps:file資料夾是我自己將要匯入的csv檔案和.gz壓縮包。

b)組裝csv檔案

說起這一步,可能需要你們根據自己的實際業務需求,手動寫程式碼導csv檔案了,這裡我只講一下csv檔案格式一些要點:

1)、節點csv檔案

節點csv檔案的***列是固定的,列值為此節點的label名稱,第二列是index,它的列頭是id:string:indexName 這種格式,解釋一下,id是這一列的property名字,可以根據需要自己命名,string為欄位的資料型別,indexName是neo4j資料庫中將要匯入的索引名稱,我自己的檔案格式如下:

資料庫中怎麼使用batch-import工具向neo4j中匯入海量資料

然後,後面的列就是節點的property了,沒什麼特別的要求

2)、關係csv檔案

先看下我的關係csv檔案:

資料庫中怎麼使用batch-import工具向neo4j中匯入海量資料

關係的csv檔案前兩列要特別注意,***列是關係的起始節點,第二列是關係的結束節點,第三列是關係型別,後面的列是關係的property,可以隨意了。他github上的說明沒有說出一些注意點,這裡要特別標明:

***列的起始節點的列頭,也就是id:string:buyerId這個東西,這個玩意一定要和節點csv檔案(上圖)中定義的一模一樣,第二列也是如此,要和結束節點的csv檔案裡的一樣,不然他會找不到對應的關係。

3)、修改batch.properties檔案

主要修改兩個地方,

如果是在現有的neo4j資料庫中進行匯入,請設定:
batch_import.keep_db=true

將節點csv檔案中所有的索引名稱加入到檔案中,例如上面這個節點csv檔案中的索引名稱是buyerId,那就在檔案中加入batch_import.node_index.buyerId=exact
以下是我本人的配置檔案:

資料庫中怎麼使用batch-import工具向neo4j中匯入海量資料

4、匯入

linux和win環境的匯入都差不多,只不過執行的指令碼不一樣,這裡以win環境為例。

檔案都準備好了,現在開始匯入了。

開啟cmd,cd到匯入指令碼的目錄,也就是import.bat所在目錄,執行命令:

import.bat test.db node.csv rel.csv
解釋一下命令的幾個引數:個引數是資料庫的目錄,可以絕對路徑指定到任意位置,第二個引數是節點csv檔案,多個csv檔案用逗號分隔,如果是壓縮包,一定要注意,這裡有個坑,不能把所有型別的node都放到一個壓縮包中,一定要每個型別的node分開壓縮,不然它只會匯入個型別的node節點,同理,關係的壓縮包也要分開壓縮,然後匯入時用逗號分隔.gz檔案。

好了,如果你的csv檔案沒有問題,記憶體足夠用的話,現在就開始等待吧。

如果想修改匯入工具的Heap大小,可以修改指令碼檔案中的 set HEAP=4G

資料庫中怎麼使用batch-import工具向neo4j中匯入海量資料

溫馨提示:如果節點檔案中有中文的話,匯入會非常慢的,除非你記憶體有128G,我有一個節點檔案,裡面只有一列是中文,而且中文最長不超過4個漢字,2000多萬記錄導了2個小時,注意我是32G記憶體,其他4000多萬的節點,沒有漢字的,基本上不超過2分鐘。

感謝各位的閱讀!關於“資料庫中怎麼使用batch-import工具向neo4j中匯入海量資料”這篇文章就分享到這裡了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

免責宣告:本站釋出的內容(圖片、視訊和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯絡站長郵箱:[email protected]進行舉報,並提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

原文連結:https://my.oschina.net/u/2538940/blog/883829