在Hive中选择数组列中的第一个元素

问题描述

我正在尝试选择数组列中的第二个元素,该元素由蜂巢中的管道分隔。我该如何实现?

输入

["John Doe|ABC","Jane Doe|XYZ"]

输出

["ABC","XYZ"]

解决方法

分解数组,使用split获取第二个元素,然后再次收集数组。例如这样的

select t.myarray original_array,collect_list(split(e.element,'\\|')[1]) result_array
  from input_table t
       lateral view explode(t.myarray) e as element
 group by t.myarray