Hive/Impala seleciona e calcula a média de todas as versões do rowkey
Pergunta
Estou me perguntando se existe uma maneira de obter versões anteriores de uma chave de linha específica no HBase sem ter que escrever um programa MapReduce e calcular a média dos valores.Fiquei curioso para saber se isso era possível usando Hive ou Impala (ou outro programa semelhante) e como você faria isso.
Minha mesa fica assim:
Composite keys Values
(md5 + date + id) | (value)
Gostaria de calcular a média de todos os valores para uma data específica e uma substring do ID ("411") para todas as versões.
Obrigado antecipadamente.
Solução
O Impala usa o metastore Hive para mapear sua noção lógica de tabela em dados armazenados fisicamente em HDFS ou HBase (para obter mais detalhes, consulte o Documentação da Cloudera).
Para saber mais sobre como informar ao metastore do Hive sobre os dados armazenados no HBase, consulte o Documentação da colmeia.
Infelizmente, conforme observado na documentação do Hive vinculada acima:
Atualmente, não há como acessar o atributo HBase Timestamp, e as consultas sempre acessarem dados com o mais recente registro de data e hora
Houve algum trabalho para adicionar esse recurso a uma versão mais antiga do Hive em HIVE-2828, embora infelizmente esse trabalho ainda não tenha sido incorporado ao trunk.
Portanto, para seu aplicativo, você terá que redesenhar seu esquema HBase para incluir uma coluna "versão", informar o metastore do Hive sobre essa nova coluna e informar seu aplicativo sobre essa coluna.