[英]Reducers stopped working at 66.68% while running HIVE Join query
[英]sparql join query explanation hows its working?
我的查询:
select ?x ?z
where
{
?x <http://purl.uniprot.org/core/name> ?y .
?x <http://purl.uniprot.org/core/volume> ?z .
?x <http://purl.uniprot.org/core/pages> "176-186" .
}
我需要为此查询创建自定义解析器。
当我在耶拿模型上执行此查询时,它返回一条记录。 谁能解释这个查询实现?
我将此查询分为三个部分:
select ?x ?y where { ?x <http://purl.uniprot.org/core/name> ?y . }
Total Records Found : 3034
select ?x ?z where { ?x <http://purl.uniprot.org/core/name> ?y . ?x <http://purl.uniprot.org/core/volume> ?z . }
Total Records Found : 2679
select ?x ?z where { ?x <http://purl.uniprot.org/core/name> ?y . ?x <http://purl.uniprot.org/core/volume> ?z . ?x <http://purl.uniprot.org/core/pages> "176-186" . }
Total Records Found : 1
请帮助我进行自定义查询解析器。
您正在尝试计算三个三重模式的连接。 关于基于Apache Hadoop的联接实现的论文将是有用的背景。
研究Apache Spark和弹性分布式数据集(RDD)概念可能会有所帮助。
考虑每种模式的可能选择性也很重要-正如Joshua所说,“页面”模式很可能会产生一个独特的解决方案,用它来简单地查找“名称”和“卷”中的每一个并不是一项艰巨的任务。
ARQ的内存算法并不旨在实现最大的独立并行度,而这正是您在Hadoop上想要的。 合并联接(或排序-合并联接)对数据进行两个可并行访问。
您可以通过扩展类OpExecutor
在基本模式级别或整个代数执行级别或其间的任何一点上扩展OpExecutor
。
听起来您在问为什么
select ?x ?z where {
?x <http://purl.uniprot.org/core/name> ?y . # (a)
?x <http://purl.uniprot.org/core/volume> ?z . # (b)
?x <http://purl.uniprot.org/core/pages> "176-186" . # (c)
}
仅返回一个结果,而每行仅返回一个结果。 SPARQL中的三重模式是连接的:非可选模式必须与数据匹配才能返回结果。 因此,您要查询?x
和?z
的值,其中满足以下所有条件 :
?x
的名称为?y
, 并且 ?x
具有一定的价值, 并且 ?x
具有特定的值“ 176-186”。 根据属性的名称,听起来您正在查询一些书目信息。 在给定的书目数据库中,可能只有一篇文章的页面正好是“ 176-186”,这并不奇怪,因为这是一个非常具体的值。
编辑以包含正确的代数链接
我能提供的最佳建议是查看ARQ的SPARQL代数的Jena文档,并在该级别上获得您的自定义评估引擎。 另一个可能有用的参考文献是W3 SPARQL代数 。
从选择的标签中看来,您打算执行分布在整个map-reduce作业中的查询操作,并且您正在寻找一个代数应用的特定示例作为概念验证。 如果您打算将其集成到Jena的查询评估中,那么您将需要手动浏览Jena的现有系统,以了解其行为方式。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.