实际上,我的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,因此没有下推过滤器,尽管在物理计划中我们可以看到过滤器确实存在。