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:
  1. 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"

  2. não sei como posso dizer algo como, select name, ph, ${nameToID[CategoryName]} from users

Por favor, avisa-me sobre isto. Obrigado!

Author: test123, 2013-01-25

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