使用shc核心不会发生谓词下推

时间:2020-01-13 14:37:19

标签: dataframe apache-spark apache-spark-sql hbase

实际上,我的HBase表每天都在遇到问题。我正在使用shc核心将表作为DataFrame读取,并且将每一列存储为STRING类型。我想做的是每天仅读取最近30天的数据。鉴于表格每天都在变化,因此加载整个表格并应用过滤器需要6个多小时。

我正在使用shc版本1.1.1-2.1-s_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: [...],这意味着没有谓词被下推。

任何人都可以帮助我解决这个问题吗?

谢绝__建议后进行编辑

我添加了:

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

在我的纱线记录中,我得到了:

DEBUG HBaseFilter:用于所有过滤器:

DEBUG 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

0 个答案:

没有答案