首页 > 解决方案 > 在配置单元中的数组内查询

问题描述

我已经看到了这一点,但它不适用于我的数据。

我有这个数据:

 1, John, a@com;b@com2,32
 2, Jack, ab@com;c@com2,33

并通过以下方式将它们加载到蜂巢:

create table t7(id int,name string, email Array<string>, age int)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
COLLECTION items terminated by ';'
STORED AS textfile;
Load data inpath '/user/maria_dev/7.txt' into table t7;

和选择输出

在此处输入图像描述

但我无法在数组中搜索特定值 在此处输入图像描述

在此处输入图像描述

那么,我错过了什么?

标签: arrayshadoophivehdfs

解决方案


你的不起作用的原因是你在第一个元素之前有空格,所以你必须使用 trim

select * from t7 where trim(email[0]) like "%a@%";
CREATE TABLE `t7`(
  `id` int,
  `name` string,
  `email` array<string>,
  `age` int)
ROW FORMAT DELIMITED
  FIELDS TERMINATED BY ','
  COLLECTION ITEMS TERMINATED BY '\;'

hive> select * from t7 where trim(email[0])="a@com";
OK
1        John   [" a@com","b@com2"]     32

hive> select * from t7 LATERAL VIEW explode(email) exploded_table as id_email where id_email like "%com2%";
OK
1        John   [" a@com","b@com2"]     32      b@com2
2        Jack   [" ab@com","c@com2"]    33      c@com2


推荐阅读