将两个列数组合并为配置单元中的 1 个数组列
Posted
技术标签:
【中文标题】将两个列数组合并为配置单元中的 1 个数组列【英文标题】:Merging two array of columns into 1 array columns in hive 【发布时间】:2020-08-29 17:35:17 【问题描述】:我想将两个基于数组的列合并为 1 个带有管道分隔符的单个输出列,在输出中维护数组列表。是否有可能在 hive 或 spark sql 中实现它? 请注意在输出中想要使用管道分隔符实现。
输入:
id val ph
1 [123,456] [789,987]
输出:
id Comb_col
1 [[123,456]|[789,987]]
【问题讨论】:
因此,您的结果需要具有带有分隔符|
的架构 array(array(int, int))?没有。
嗨 Lamanus,是的,我正在寻找带有“|”(管道)分隔符的数组(数组(int,int))
正如我所说,数组分隔符始终是,
,AFAIK。你的陈述应该是字符串
【参考方案1】:
试试这个:
SELECT id, CONCAT('[', val, '|', ph, ']') as Comb_col
【讨论】:
【参考方案2】:如果你想使用 Hive,你可以这样做:
from
(
from
your_table -- Change this with your table name
select
transform(id, val, ph) using '/bin/cat' as (id, val, ph)
) t
select
cast(id as int) as id, -- Assuming that your id column is int.
concat('[', val, '|', ph, ']') as comb_col;
【讨论】:
以上是关于将两个列数组合并为配置单元中的 1 个数组列的主要内容,如果未能解决你的问题,请参考以下文章