将两个列数组合并为配置单元中的 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 个数组列的主要内容,如果未能解决你的问题,请参考以下文章

两个数组交叉合并为一个数组

匹配两个数组列 postgresql-9.4-

如何把2个数组合并为一个数组

Matlab两个一维数组合并为一个数组?

当列数不相等而不将每个列定义为 NuLL 时,有没有办法在 Impala SQL 中合并两个表

php下将多个数组合并成一个数组的方法与实例代码