【问题标题】:spark predicate push down is not working with phoenix hbase table火花谓词下推不适用于phoenix hbase表
【发布时间】:2018-12-28 09:00:10
【问题描述】:

我正在研究 spark-hive-hbase 集成。这里 phoenix hbase 表用于集成。

Phoenix : **apache-phoenix-4.14**
HBase   : **hbase-1.4**
spark   : **spark-2.3**
hive    : **1.2.1**

我正在使用 spark thrift 服务器并使用 jdbc.

访问表

我测试的几乎所有基本功能都运行良好。但是当我从 spark with where 条件提交查询时,它会在没有 where 条件的情况下提交给 phoenix,并且所有过滤都发生在 spark 端。

如果表有数十亿的数据,我们就不能这样做了。

示例:

Input-query: select * from hive_hbase where rowid=0;

Query-submitted: PhoenixQueryBuilder: Input query : select /*+ NO_CACHE  */ "rowid","load_date","cluster_id","status" from hive_hbase

这是一个错误吗? 请建议是否有任何方法可以强制使用 where 条件(过滤器)提交查询(仅限 jdbc)。

感谢和问候 拉胡尔

【问题讨论】:

    标签: apache-spark hadoop hive hbase phoenix


    【解决方案1】:

    上述行为不是错误,而是 spark 的一个特性,这将确保过滤器不会在 DB 端发生,而是在 spark 端完成,从而确保非行键过滤器的性能和执行可以很快完成。如果您仍然想为所有意图和目的推送谓词,您可以使用 phoenix-spark 或者自己编辑 spark 的谓词下推代码。以下是供您参考的链接

    1. https://community.hortonworks.com/questions/87551/predicate-pushdown-support-in-hortonworks-hbase-co.html
    2. http://www.waitingforcode.com/apache-spark-sql/predicate-pushdown-spark-sql/read

    【讨论】:

    • 亲爱的桑迪普,如果我自己编辑代码,则很难处理所有情况,例如:联合。如果一些修复/改进来自 spark/phoenix 方面会更好。
    • 这个答案中的两个链接都提到了谓词下推,它确实在数据库端而不是在 Spark 中进行过滤。这似乎与此答案中所写的其他内容相矛盾。
    猜你喜欢
    • 2015-12-10
    • 2015-08-24
    • 1970-01-01
    • 2019-02-02
    • 2016-05-06
    • 2020-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多