使用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壓縮包進行匯入,請使用我修改過的版本:
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]進行舉報,並提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。