3

我正在使用作为我们数据收集的一部分生成的 RDF 数据集,该数据集由大约 160 万个小文件组成,总共 6.5G 的文本(ntriples)和大约 20M 三元组。我的问题与将这些数据加载到在 Tomcat 下运行的 Sesame 三重存储所花费的时间有关。

我目前正在通过 HTTP api(在同一台机器上)使用简单的 POST 一次请求一个文件从 Python 脚本加载它,完成加载大约需要五天时间。查看已发布的基准,这似乎很慢,我想知道我可以使用什么方法来更快地加载数据。

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

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

将文件分组为更大的块有帮助吗?这将减少发送文件的 HTTP 开销。多大的块比较好?这篇博客文章建议每块 100,000 行(它正在切割一个更大的文件,但想法是一样的)。

谢谢,

史蒂夫

4

1 回答 1

2

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

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

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

于 2013-09-10T00:08:03.300 回答