在 Hive 中将单行列拆分为多列

Posted

技术标签:

【中文标题】在 Hive 中将单行列拆分为多列【英文标题】:Split single row columns into multiple columns in Hive 【发布时间】:2017-05-17 07:50:57 【问题描述】:

我有一个这样的 Hive 表

ID1 Name1 ID2 Name2 ID3 Name3....
1   ABC   2   MNP   3   XYZ
11  LMP   12  PLL   13  UIP

这个表可能没有。列对(即 ID 和名称)

我需要将上面的表转换成一个只有 2 列 ID 和 Name 的新 Hive 表,如下所示

ID  Name
1   ABC
2   MNP
3   XYZ
11  LMP
12  PLL
13  UIP

请建议我如何在 Hive 中实现这一点。

谢谢

【问题讨论】:

【参考方案1】:
select  explode(map(*)) as (id,name)
from    mytable
;

+----+------+
| id | name |
+----+------+
|  1 | ABC  |
|  2 | MNP  |
|  3 | XYZ  |
| 11 | LMP  |
| 12 | PLL  |
| 13 | UIP  |
+----+------+

【讨论】:

我已经更新了问题。该表将重复设置 4 列而不是 2 列。地图不能用于超过 2 列。请提出任何其他解决方案。 这是对原始问题的重大改变。接受答案并打开一个新问题。 谢谢 Dudu 我已经接受了你的回答.. 将发布另一个问题。 请查看(***.com/questions/44039492/…)

以上是关于在 Hive 中将单行列拆分为多列的主要内容,如果未能解决你的问题,请参考以下文章

Hive中行列转换

在oracle中将多行列转换为一行列

行列转换之——多行转多列,多列转多行实践版

线性代数行列式计算之元素拆分与凑项法

Kettle 行列互换之——行转列(多列数据合并成一列变为多行)

在熊猫数据框中将多列拆分为行