hive-如何从list类型的表中读取列

vcirk6k6  于 2021-05-31  发布在  Hadoop
关注(0)|答案(1)|浏览(1046)

我有一个名为customer的配置单元表,它有一个名为cust\u id的列表类型列,具有以下值: cust_id ```
[123,234,456,567]

[345,457,67]

[89,23,34]

现在我只想在select查询中读取这个特定的列cust\u id,它可以将所有这些列表值作为这个列cust\u id的以下单独值:

cust_id

123

234

456

567

345

457

67

89

23

34

基本上我想获取 `cust_id` 从该表作为一列,在另一个查询的where exists或where in子句中使用这些值。如果能找到解决办法,我们将不胜感激。
vd8tlhqk

vd8tlhqk1#

好吧,这是你在Hive手册上找的东西。。
横向视图与用户定义的表生成函数(如explode())结合使用。正如在内置表生成函数中所提到的,udtf为每个输入行生成零个或多个输出行。
例如

SELECT cust_id
FROM mytable LATERAL VIEW explode(cust_id) mytab AS cust_id;

完整示例:

drop table customer_tab;
create table customer_tab ( cust_id array<String>);

INSERT INTO table customer_tab select array('123','234','456','567');

INSERT INTO table customer_tab select array('345','457','67');

INSERT INTO table customer_tab select array('89','23','34');

select * from customer_tab;
--      customer_tab.cust_id
--      ["123","234","456","567"]
--      ["345","457","67"]
--      ["89","23","34"]

SELECT mytab.cust_id
FROM customer_tab LATERAL VIEW explode(cust_id) mytab AS cust_id;

mytab.cust_id
123
234
456
567
345
457
67
89
23
34

相关问题