使用shc核心不发生Dataframe predicate 下推

hfsqlsce  于 2021-06-07  发布在  Hbase
关注(0)|答案(0)|浏览(181)

实际上,我的hbase表每天都在变化,我面临一个问题。我正在使用̀ shc核心将表读取为Dataframe,我将每一列存储为 STRING 类型。我要做的是每天只读取最后30天的数据。考虑到表每天都在变化,加载整个表并应用过滤器需要6个多小时。
我使用的是shc版本1.1.1-2.1-s\u 2.11
我要做的是:

val df = withCatalog(catalog)

df.filter($"date > "20191201" && $"date < "20200101")

当我这么做的时候 explain() 它在实际计划中显示了这一点

== Physical Plan ==

* Filter (isnotnull(ip#16) && (ip#16 >= 4F62B402))

+- *Filter <function1>.apply
   +- *Scan HBaseRelation(Map(catalog ->....

我不明白 PushedFilters: [...] 也就是说没有被下推的 predicate 。
有谁能帮我解决这个问题吗?
在shay建议后编辑
我补充说:

Logger.getLogger("org").setLevel(Level.DEBUG)
Logger.getLogger("akka").setLevel(Level.DEBUG)

在我的Yarn原木里我得到了:
调试hbasefilter:对于所有筛选器:
调试hbasefilter:ret:debug
hbasefilter:开始:无结束:无
这意味着,根据下面的代码,没有将筛选器转换为hbasefilter,因此没有向下推的筛选器,尽管在物理计划中我们可以看到确实存在筛选器。
https://github.com/hortonworks-spark/shc/blob/76673b40b3ce370d0fbc4614938cbe54cfffa082/core/src/main/scala/org/apache/spark/sql/execution/datasources/hbase/hbasefilter.scala#l127

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题