我正在使用蜂窝0.14和Hbase 0.98.8我想使用HiveQL来访问HBase“表”。
我创建了一个具有复杂复合行键的表:
CREATE EXTERNAL TABLE db.hive_hbase (rowkey struct<p1:string, p2:string, p3:string>, column1 string, column2 string)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
COLLECTION ITEMS TERMINATED BY ';'
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
WITH SERDEPROPERTIES ("hbase.columns.mapping" =
":key,cf:c1,cf:c2")
TBLPROPERTIES("hbase.table.name"="hbase_table");表正在成功创建,但HiveQL永远不会完成:
SELECT * from db.hive_hbase WHERE rowkey.p1 = 'xyz';不使用行键的查询很好,也可以使用带过滤器的hbase shell。我在日志中没有找到任何东西,但我认为可能存在复杂组合键和性能的问题。
有没有人面临同样的问题?解决这个问题的提示?其他想法,我可以尝试什么?
谢谢
更新16.07.15:我将调试属性更改为‘log4j’,发现了一些有趣的信息:
上面写着:
2015-07-15 15:56:41,232 INFO ppd.OpProcFactory (OpProcFactory.java:logExpr(823)) - Pushdown Predicates of FIL For Alias : hive_hbase
2015-07-15 15:56:41,232 INFO ppd.OpProcFactory (OpProcFactory.java:logExpr(826)) - (rowkey.p1 = 'xyz')但后面有几行:
2015-07-15 15:56:41,430 DEBUG ppd.OpProcFactory (OpProcFactory.java:pushFilterToStorageHandler(1051)) - No pushdown possible for predicate: (rowkey.p1 = 'xyz')所以我的猜测是: HBase上的HiveQL不会在Hbase中执行任何谓词下推,而是启动一个MapReduce作业。
谓词下推会不会有bug?
发布于 2015-07-16 02:33:10
我使用Hive 0.13尝试了类似的情况,它工作得很好。我知道结果了。您正在开发哪个版本的hive?
https://stackoverflow.com/questions/31334237
复制相似问题