我試圖從Twitter上的用戶和追隨者的50MB文本文件導入數據到Neo4j。但是我的代碼只運行到達到大約10000個節點並拋出錯誤:「java.lang.OutOfMemoryError:超出GC開銷限制」。這是我的代碼,我不知道我在哪裏做錯了?Neo4j中無法導入超過10000個節點
BufferedReader br = new BufferedReader(new FileReader(inputFile));
String currentLine;
String token[] = null;
try (Transaction tx = graphDb.beginTx()) {
Label userLabel = DynamicLabel.label("User");
while((currentLine = br.readLine()) != null) {
if(!currentLine.equals("\n")) token = currentLine.split("\t");
if(token.length > 2) {
userNode = graphDb.createNode(userLabel);
userNode.setProperty("username", token[2]);
userNode.setProperty("id", token[1]);
userNode.setProperty("cookie", token[0]);
System.out.println("Insert user: " + token[0] + " " + token[1] + " " + token[2]);
System.out.println("Insert follower...");
for(int i=3;i<token.length;i++) {
followerNode = graphDb.createNode(userLabel);
followerNode.setProperty("id", token[i]);
relationship = userNode.createRelationshipTo(followerNode, RelTypes.FOLLOWED_BY);
}
System.out.println("Insert follower: done! - " + (token.length-3));
}
}
tx.success();
}
br.close();
批量處理您的交易,例如每10K用戶提交一次tx,然後創建一個新的tx。 –