如何删除hive数组中值为0的元素
Posted
技术标签:
【中文标题】如何删除hive数组中值为0的元素【英文标题】:How to remove the elements with value as zero in hive array 【发布时间】:2021-04-01 15:21:09 【问题描述】:我在 hive 中有一个数组列,其中包含 7 个数字。
例如:[32,4,0,43,23,0,1]
我希望我的输出为[32,4,43,23,1]
(删除所有零元素)
有人帮我完成这个吗?
【问题讨论】:
【参考方案1】:分解数组,过滤,再次收集。
演示:
with mydata as (
select array(32,4,0,43,23,0,1) as initial_array
)
select initial_array, collect_set(element) as result_array
from
(
select initial_array, e.element
from mydata
lateral view outer explode(initial_array)e as element
) s
where element != 0
group by initial_array
结果:
initial_array result_array
[32,4,0,43,23,0,1] [32,4,43,23,1]
【讨论】:
collect_set 将删除重复项,因此请使用 collect_list 而不是 collect_set以上是关于如何删除hive数组中值为0的元素的主要内容,如果未能解决你的问题,请参考以下文章
用C语言数据结构编写 删除顺序表中值为x的元素 跪求大神解答 ! !