Variável do tipo de mapa na colmeia
Estou a ter dificuldade em definir o tipo de mapa na colmeia. De acordo com Hive Manual há definitivamente um tipo de mapa, infelizmente não há nenhum exemplo de como usá-lo. :-(
suponha que tenho uma tabela (utilizadores) com as seguintes colunas:
Name Ph CategoryName
Esta coluna de "CategoryName" tem um conjunto específico de valores. Agora eu quero criar uma hashtable que maps CategoryName para CategoryID. Tentei fazer ...
set hivevar:nameToID=map('A',1,'B',2);
Tenho duas perguntas:
Quando do
set hivevar:${nameToID['A']}
eu pensei que iria imprimir o valor como 1. Mas eu entendo. "${hivevar: nameToID ['a']} não está definido"não sei como posso dizer algo como,
select name, ph, ${nameToID[CategoryName]} from users
9
1 answers
Vamos assumir que tem a seguinte tabela:
describe test;
name string
ph string
category map<string,int>
select * from test;
name ph category
Name1 ph1 {"type":1000,"color":200,"shape":610}
Name2 ph2 {"type":2000,"color":200,"shape":150}
Name3 ph3 {"type":3000,"color":700,"shape":167}
A aceder à coluna do mapa:
select ph, category["type"], category["color"] from test;
ph1 1000 200
ph2 2000 200
ph3 3000 700
Um equivalente usando uma variável Colmeia:
set hivevar:nameToID=
map("t", category["type"], "c", category["color"], "s", category["shape"]);
select ph, ${nameToID}["t"], ${nameToID}["c"] from test;
ph1 1000 200
ph2 2000 200
ph3 3000 700
Isto funciona na colmeia 0.9.0
22
Author: Lorand Bendig, 2013-01-29 12:20:09