Neo4j数据导出从jersey客户端获取SocketTimeoutException

时间:2015-01-26 01:26:18

标签: java rest neo4j jersey-client

我有3个大型neo4j数据库(每个100万条记录),我需要将它们组合在一起。

我决定将每个Neo4j中的数据导出到json文件中,然后将其加载到新文件中。

导出该数据时出现问题。

如果我只是枚举所有节点,那么这个过程就是很长(每个节点大约10毫秒)。我试过一个CYPHER:

String cypher = "MATCH (n) RETURN n";
if (offset > 0)
    cypher += " SKIP " + offset;
cypher += " LIMIT " + MAX_COMMANDS;

offset += MAX_COMMANDS;

QueryResult<Map<String, Object>> nodes = engine.query(cypher, null);
if (!nodes.iterator().hasNext()) 
    break;

for (Map<String, Object> row : nodes) {
    RestNode node = (RestNode) row.get("n");

    // export code here
}

通过这个,我已经达到了每节点0.17毫秒的速度。但是,程序已经导出大约700k个节点,程序已经与Read timed out崩溃。

Exception in thread "main" com.sun.jersey.api.client.ClientHandlerException: java.net.SocketTimeoutException: Read timed out

我试图减少MAX_COMMANDS常数,但它没有帮助。

有没有办法增加此超时?或者是否有更有效的方法从Neo4j导出数据?

我正在使用java-rest-binding 2.0库并通过REST访问Neo4j服务器

谢谢,澳大利亚国庆日快乐

0 个答案:

没有答案