Java 在Neo4j中导入的节点不能超过10000个
我正试图将Twitter上50MB的用户和追随者文本文件中的数据导入Neo4j。但我的代码只运行到大约10000个节点并抛出错误:“java.lang.OutOfMemoryError:超出了GC开销限制”。这是我的代码,我不知道我哪里做错了Java 在Neo4j中导入的节点不能超过10000个,java,neo4j,Java,Neo4j,我正试图将Twitter上50MB的用户和追随者文本文件中的数据导入Neo4j。但我的代码只运行到大约10000个节点并抛出错误:“java.lang.OutOfMemoryError:超出了GC开销限制”。这是我的代码,我不知道我哪里做错了 BufferedReader br = new BufferedReader(new FileReader(inputFile)); String currentLine; String token[] = null;
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();
BufferedReader br=newbufferedreader(newfilereader(inputFile));
串电流线;
字符串标记[]=null;
try(事务tx=graphDb.beginTx()){
Label userLabel=DynamicLabel.Label(“用户”);
而((currentLine=br.readLine())!=null){
如果(!currentLine.equals(“\n”))标记=currentLine.split(“\t”);
如果(token.length>2){
userNode=graphDb.createNode(userLabel);
setProperty(“用户名”,令牌[2]);
setProperty(“id”,令牌[1]);
setProperty(“cookie”,令牌[0]);
System.out.println(“插入用户:“+token[0]+”“+token[1]+”“+token[2]);
System.out.println(“插入跟随器…”);
对于(inti=3;i您的问题不在于neo4j,而在于java。具体来说,您的堆超过了最大大小
您可以:
a) 优化您的代码,使堆不会变得像现在这样大(我通常不会在开发的后期讨论优化,但您必须在某处浪费大量的堆空间,特别是当您的输入文件只有50MB时)
b) 使用以下命令行参数运行java,它允许您覆盖最大堆大小:-Xmx1024m
。这将设置为1024 MB,但您可以使用所需的任何内容替换1024
。谢谢您的帮助,但在我询问之前,我已将其设置为1024 MB,它仍会引发相同的错误。可能是我遇到的问题s在我的代码中。批处理事务,例如,每10k个用户提交一次发送,然后创建一个新的发送。