我在我的项目中使用Dbpedia,我想创建一个本地sparql端点,因为在线端点不可靠。我下载了数据转储(大型NT文件)并决定使用Jena TDB。使用NetBeans IDE使用输入流读取源NT文件,然后使用以下代码行将NT文件加载到datasetGraph中:
TDBLoader.load(indexingDataset, inputs, true);
我现在让它运行约5小时但它仍然没有完成。虽然这样做我的笔记本电脑上的所有东西似乎都放慢了速度,因为它占用了我所有的物理内存空间。有没有更快的方法来做到这一点???
文档说使用tdbloader2,但它只在使用Windows时可用于linux。如果有人可以通过cygwin告诉我如何在Windows中使用此工具,那将非常有用。请注意我在Windows中从未真正使用过Cygwin。
答案 0 :(得分:6)
最新版本的TDB有两个用于批量加载的命令行实用程序:tdbloader和tdbloader2。第一个是纯Java,它可以在Windows上运行,也可以在任何带有JVM的机器上运行。第二种是Java和UNIX shell脚本的混合(特别是它使用UNIX排序)。它运行在Linux上,我不确定它是否在Cygwin上运行。我建议您在64位计算机上使用tdbloader,并尽可能多地使用RAM。 : - )
最新版本的TDB可在此处获取: http://www.apache.org/dist/incubator/jena/jena-tdb-0.9.0-incubating/jena-tdb-0.9.0-incubating-distribution.zip
TDB的开发版本还有一个额外的批量加载程序命令:tdbloader3。这是tdbloader2的纯Java版本。我们使用带有二进制文件的纯Java外部排序,而不是使用UNIX排序(仅适用于文本文件)。有关tdbloader3的更多详细信息,请搜索JENA-117问题。
你可以在Apache快照存储库中找到一个SNAPSHOT的TDB,但是你已经被警告了,尚未发布。
对于喜欢冒险的人来说,还有一个不包含在Apache Jena中的tdbloader4,它被认为是一个实验原型。 tdbloader4使用MapReduce构建TDB索引(即B + Tree索引)(这稍微延伸了MapReduce模型,但它有效)。 你可以在这里找到tdbloader4:https://github.com/castagna/tdbloader4
总而言之,我在Windows上的建议是:下载最新的TDB官方版本,并使用带有大量RAM的64位计算机的tdbloader。如果没有,请使用m1.xlarge EC2实例(即15 GB的RAM)(或等效的)。
如需更多帮助,我邀请您加入官方jena-users@incubator.apache.org邮件列表,我相信您可以获得更好,更快的支持。