合并 hive 中的列

Posted

技术标签:

【中文标题】合并 hive 中的列【英文标题】:Merge columns in hive 【发布时间】:2019-06-11 13:06:05 【问题描述】:

我是蜂巢新手。请帮助解决我的以下问题。

我在 hive 中有下表,其中一列的数据为 |作为分隔符。

C1
1|2|3|4|5|6
7||9|10|11|12

以下是基于分隔符的预期输出,我想将其拆分为列。

C1    C2   C3  C4  C5  C6
1     2    3   4   5   6
7          9   10  11  12

我尝试过使用 locate 和 substr 函数,最后得到了复杂的 sql 查询。你们能以一种简单的方式帮助我吗?

谢谢!

【问题讨论】:

列数是固定的吗? @VamsiPrabhala 是的,列数是固定的,连接字符串 (1|2|3|4|5|6) 也将有六列的数据要拆分。希望你明白了。 【参考方案1】:

使用split,它返回一个包含值的array,可以从中选择单个元素作为列。

select split(c1,'\\|')[0] as c1
      ,split(c1,'\\|')[1] as c2
      ,split(c1,'\\|')[2] as c3
      ,split(c1,'\\|')[3] as c4
      ,split(c1,'\\|')[4] as c5
      ,split(c1,'\\|')[5] as c6
from tbl

【讨论】:

以上是关于合并 hive 中的列的主要内容,如果未能解决你的问题,请参考以下文章

如何将一列的列值组合到 MySQL 中的另一列中?

将来自一个数据框的值合并到 Pandas 中的新列中[重复]

当列中的项目是列表时,列上的合并 Pandas DataFrame 的 TypeError

拆分2列中的特殊字符并在oracle中合并为多行

熊猫:来自没有合并的匹配的列

使用具有相同字符串但顺序不同的列合并两个 data.frame