如何在Spark / Scala中将行转置为列?

时间:2018-12-07 20:41:06

标签: apache-spark hive

我是火花新手,但是我找不到一个简单问题的答案:如何将行改为列?例如,我有如下数据:
类型Col1 | Col2 | Col3 | ... | Col60
1 | 12 | 3 | 4 | ... | 87
2 | 1 | 5 | 6 | ... | 90

我想将其更改为

类型| ColName |值
1 | Col1 | 12
1 | Col2 | 3
1 | Col3 | 4
...
1 | Col60 | 87
2 | Col1 | 1
2 | Col2 | 5
2 | Col3 | 6
...
2 | Col60 | 90

我尝试搜索许多地方,但是没有完全符合我需要的答案。

1 个答案:

答案 0 :(得分:1)

在Hive中,可以通过将列放入lateral view中来将explodemap一起使用。

select type,colName,val
from tbl
lateral view explode(map('col1',col1,'col2',col2,'col3',col3)) t as colName,val --fill it with all the columns from the table

Spark SQL还可以使用lateral viewexplode