Hive 配置单元中的映射类型变量
我在尝试定义配置单元中的映射类型时遇到问题。据了解,确实存在一种映射类型,但遗憾的是,没有任何关于如何使用它的示例:-( 假设我有一个具有以下列的表(用户):Hive 配置单元中的映射类型变量,hive,hiveql,Hive,Hiveql,我在尝试定义配置单元中的映射类型时遇到问题。据了解,确实存在一种映射类型,但遗憾的是,没有任何关于如何使用它的示例:-( 假设我有一个具有以下列的表(用户): Name Ph CategoryName 此“CategoryName”列具有特定的值集。现在我想创建一个哈希表,将CategoryName映射到CategoryID。我尝试了以下操作: set hivevar:nameToID=map('A',1,'B',2); 我有两个问题: 当我设置hivevar:${nameT
Name Ph CategoryName
此“CategoryName”列具有特定的值集。现在我想创建一个哈希表,将CategoryName映射到CategoryID。我尝试了以下操作:
set hivevar:nameToID=map('A',1,'B',2);
我有两个问题:
select name,ph,${nameToID[CategoryName]}这样的话
假设您有下表:
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}
使用配置单元变量的等效项:
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
这在Hive 0.9.0上运行谢谢你的回复罗兰。我刚刚检查了我们节点上的Hive版本,不幸的是它是0.8.1.6。所以我想我在这里运气不好。:-(无论如何感谢你的帮助!嗨罗兰,这是我正在尝试的:
Hive>set-hivevar:nameToID=map(“t”,“2”,“c”,“1”);
Hive>set${nameToID}[“t”];
${nameToID}[“t”]未定义
要实现什么?配置单元变量/属性是[key=value]对。设置${nameToID}[“t”]
似乎不完整。如果您想使用hivevar访问映射值,请参阅上面的答案。还要注意,在访问集合值时,您不能同时计算任何返回所需索引的函数(在这种情况下,您将得到不支持的映射索引的非常量表达式
错误).这就是我在映射值中定义完整字段名的原因。
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