如何加速将许多小型RDF文件加载到芝麻?

时间:2013-09-09 07:45:10

标签: http rdf sesame

我正在处理作为数据收集的一部分生成的RDF数据集,该数据集由大约1.6M小文件组成,总共6.5G文本(ntriples)和大约20M三元组。我的问题涉及将这些数据加载到Tomcat下运行的Sesame三元组商店的时间。

我目前正在通过HTTP api(在同一台计算机上)从Python脚本加载它,使用简单的POST一次请求一个文件,并且需要大约五天才能完成加载。查看已发布的基准测试,这似乎非常缓慢,我想知道可以使用哪种方法更快地加载数据。

我确实认为我可以编写Java来直接连接到商店,所以没有HTTP开销。但是我在这里回答了另一个问题,即不支持并发访问,因此看起来不像是一个选项。

如果我要编写Java代码来连接到HTTP存储库,那么Sesame库是否会做一些特殊的魔法来使数据加载更快?

将文件分组到更大的块有帮助吗?这将减少发送文件的HTTP开销。什么尺寸的块会好? This blog post建议每个块有100,000行(它正在削减更大的文件,但想法是相同的)。

谢谢,

史蒂夫

1 个答案:

答案 0 :(得分:2)

如果您能够使用Java而不是Python,我建议您使用Sesame的Repository API的事务支持 - 启动事务,添加几个文件,然后提交;冲洗&重复,直到您发送所有文件。

如果这不是一个选项,那么确实将数据分块为更大的文件(或更大的POST请求主体 - 您当然不一定需要对文件进行物理修改)会有所帮助。在你的情况下,一个很好的块大小可能会是大约500,000三倍 - 说实话这是一个猜测,但我认为这会给你很好的结果。

您还可以通过在POST请求正文上使用gzip压缩来减少开销(如果您还没有这样做)。