Ho una tabella in Hbase diciamo "tbl" e vorrei interrogarla utilizzando l'hive . Quindi ho mappato una tabella di scorporare come segue:Ottimizzazione delle query hive che utilizzano la tabella HBase sottostante
CREATE EXTERNAL TABLE tbl(id string, data map<string,string>)
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,data:")
TBLPROPERTIES("hbase.table.name" = "tbl");
domande come:
select * from tbl", "select id from tbl", "select id, data
from tbl
sono veramente veloce.
Ma query come
select id from tbl where substr(id, 0, 5) = "12345"
select id from tbl where data["777"] IS NOT NULL
sono incredibilmente lento.
Nella contrario durante l'esecuzione da shell HBase:
"scan 'tbl', {
COLUMNS=>'data', STARTROW='12345', ENDROW='12346'}" or
"scan 'tbl', { COLUMNS=>'data', "FILTER" =>
FilterList.new([qualifierFilter('777')])}"
è estremamente veloce!
Quando ho guardato nel lavoro mapred generato da alveare su JobTracker ho scoperto che "map.input.records" conta tutti gli elementi nella tabella HBase, significa che il lavoro fa una scansione completa della tabella prima del suo inizio, anche eventuali mapper !! Inoltre, sospetto che copi tutti i dati dalla tabella Hbase in hdf alla cartella di input tmp del mapper prima di eseguire.
Quindi, le mie domande sono: Perché il gestore di memoria di hbase per hive non traduce le query di hive in nelle funzioni di hbase appropriate? Perché esegue la scansione di tutti i record e li divide utilizzando la clausola "where"? Come può essere migliorato?
Qualsiasi suggerimento per migliorare le prestazioni delle query Hive (mappate alla tabella HBase).
Possiamo creare un indice secondario sulle tabelle HBase?
Stiamo utilizzando l'integrazione di Hase e Hase e stiamo cercando di ottimizzare le prestazioni delle query Hive.
Avete cifre per le query che vanno contro l'integrazione tra testo di Hive vs ORC e HBase? In che modo le query Tpch vanno contro i precedenti formati di archiviazione? Grazie e saluti! – user1393608
Hey @Ram, hai mai trovato una soluzione/soluzione adeguata per questo problema? – Havnar