gpt4 book ai didi

Java OutOfMemoryError 与 Sesame

转载 作者:行者123 更新时间:2023-12-01 14:01:54 26 4
gpt4 key购买 nike

我使用 Sesame 通过 SPARQL 查询 RDF。我处理大文件(2GB、10GB)并随后执行多个查询。在处理如此大的文件时,我收到错误java.lang.OutOfMemoryError:Java堆空间。我使用参数 -Xmx3g 运行我的应用程序,但似乎对于这些文件来说还不够。也许我应该在每次查询后关闭存储库?

这是我的代码:

void runQuery() {
try {
con = repo.getConnection();
TupleQuery tupleQuery = con.prepareTupleQuery(QueryLanguage.SPARQL, queryString);
TupleQueryResult result = tupleQuery.evaluate();
while (result.hasNext()) {
result.next();
}
result.close();
con.close();
} catch (Exception e) {
...
}
}
}

runTests() {
File dataDir = new File("RepoDir/");
repo = new SailRepository(new NativeStore(dataDir));
repo.initialize();
...
for (int j = 0; j < NUMBER_OF_QUERIES; ++j) {
queryString = queries.get(j);
runQuery();
}
...
repo.shutDown();
}

另外,对于这么大的文件,是否可以使用MemoryStore代替NativeStore?

发出错误的查询示例:

SELECT DISTINCT ?name1 ?name2 
WHERE {
?article1 rdf:type bench:Article .
?article2 rdf:type bench:Article .
?article1 dc:creator ?author1 .
?author1 foaf:name ?name1 .
?article2 dc:creator ?author2 .
?author2 foaf:name ?name2 .
?article1 swrc:journal ?journal .
?article2 swrc:journal ?journal
FILTER (?name1<?name2)
}

最佳答案

这就是 SP2B 查询 4(在您的原始帖子中提供的信息会很有用,如果您希望人们能够提供完整的答案,请完成您的问题)。

5M 规模的 SP2B 查询 4 ​​返回约 1840 万结果。 5M 数据集(海龟中)约为 500M,因此考虑到您指定的大小,我猜您正在尝试使用 25M 和 100M 数据集?

original authors甚至无法发布第四季度结果集的大小,因为没有任何东西可以计算它(至少在研究范围内)。考虑到数据集中该查询结果的比例因子,我想我们会在 25M 规模上获取大约 100m+ 结果,在 100M 规模上可能会获取多达 1B 个结果。

计算结果集所需的中间连接的大小巨大,难怪 3G RAM 不够用。 Sesame 是一个很好的系统,但我不知道在这种规模下回答该查询需要多少内存,或者即使它根本可以回答它。

据我所知,只有一个系统报告以 25M 的速度运行该查询,没有人以 100M 的速度运行该查询。这就是为什么 SP2B 是一个伟大但反常的基准。如果您尝试对三重存储性能进行基准测试,您可能会阅读更多相关背景 Material ,并且还可以研究 BSBM。

关于Java OutOfMemoryError 与 Sesame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19291415/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com