我使用Hive 0.14和Hbase 0.98.8 我想使用HiveQL訪問HBase「表」。HiveQL到HBase
我創建了一個表,一個複雜的複合rowkey:
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';
查詢,而無需使用rowkey的罰款和還使用帶過濾器的hbase shell正在工作。 我在日誌中找不到任何東西,但我認爲複雜的組合鍵和性能可能存在問題。
有沒有人面臨同樣的問題?提示解決它?其他想法,我可以嘗試什麼?
謝謝
更新15年7月16日: 我改變了log4j屬性爲 'DEBUG',發現了一些有趣的信息:
它說:
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')
所以我的猜測是:HiveQL over HBase不會在Hbase中執行任何謂詞下推,而是啓動MapReduce作業。
有沒有謂詞下推錯誤?
我添加了一些新的信息:可能有一個錯誤與謂詞下推(也許在線的大型數據集?!) – meecrob