数据导入期间超出了Fuseki GC开销限制

时间:2014-01-17 22:31:37

标签: java rdf sparql jena fuseki

我试图在启动时将LinkedMDB(6.1米三倍)导入我当地版本的jena-fuseki:

/path/to/fuseki-server --file=/path/to/linkedmdb.nt /ds

然后运行一分钟,然后因以下错误而死:

Exception in thread "main" java.lang.OutOfMemoryError: GC overhead limit exceeded
    at com.hp.hpl.jena.graph.Node$3.construct(Node.java:318)
    at com.hp.hpl.jena.graph.Node.create(Node.java:344)
    at com.hp.hpl.jena.graph.NodeFactory.createURI(NodeFactory.java:48)
    at org.apache.jena.riot.system.RiotLib.createIRIorBNode(RiotLib.java:80)
    at org.apache.jena.riot.system.ParserProfileBase.createURI(ParserProfileBase.java:107)
    at org.apache.jena.riot.system.ParserProfileBase.create(ParserProfileBase.java:156)
    at org.apache.jena.riot.lang.LangNTriples.tokenAsNode(LangNTriples.java:97)
    at org.apache.jena.riot.lang.LangNTriples.parseOne(LangNTriples.java:90)
    at org.apache.jena.riot.lang.LangNTriples.runParser(LangNTriples.java:54)
    at org.apache.jena.riot.lang.LangBase.parse(LangBase.java:42)
    at org.apache.jena.riot.RDFParserRegistry$ReaderRIOTFactoryImpl$1.read(RDFParserRegistry.java:142)
    at org.apache.jena.riot.RDFDataMgr.process(RDFDataMgr.java:818)
    at org.apache.jena.riot.RDFDataMgr.parse(RDFDataMgr.java:679)
    at org.apache.jena.riot.RDFDataMgr.read(RDFDataMgr.java:211)
    at org.apache.jena.riot.RDFDataMgr.read(RDFDataMgr.java:104)
    at org.apache.jena.fuseki.FusekiCmd.processModulesAndArgs(FusekiCmd.java:251)
    at arq.cmdline.CmdArgModule.process(CmdArgModule.java:51)
    at arq.cmdline.CmdMain.mainMethod(CmdMain.java:100)
    at arq.cmdline.CmdMain.mainRun(CmdMain.java:63)
    at arq.cmdline.CmdMain.mainRun(CmdMain.java:50)
    at org.apache.jena.fuseki.FusekiCmd.main(FusekiCmd.java:141)

有没有办法可以提高内存限制或以不太密集的方式导入数据?

为了比较起见,当我使用100万个三重源文件时,它的导入时间不到10 秒。

2 个答案:

答案 0 :(得分:5)

增加堆内存java -Xmx2048M -jar fuseki-sys.jar ......

使用编辑器打开fuseki-server,您会发现行JVM_ARGS=${JVM_ARGS:--Xmx1200M}将其修改为JVM_ARGS=${JVM_ARGS:--Xmx2048M}

答案 1 :(得分:2)

使用JVM_ARGS脚本时设置fuseki-server

另请注意,--file=...正在将文件读入内存。也许这对于处理这种方式来说太大了。如果是这样,请加载到TDB并使用带Fuseki的TDB数据库。