使用Apache Spark将数据表从行明智地旋转到列明智

时间:2018-11-25 02:02:26

标签: apache-spark

我需要一些帮助,将带有Apache Spark的数据从行格式转换为列格式。

输入格式:

+--+-----+-----+
|id |name|value|
+--+-----+-----+
| 1|    a|   m1|
| 1|    b|   m2|
| 1|    c|   m3|
| 1|    d|   m4|
| 1|    e|   m1|
| 2|    b|   m2|
| 2|    c|   m3|
| 2|    f|   m1|
| 2|    g|   m3|
| 2|    h|   m4|
| 2|    i|   m1|
| 2|    k|   m2|
| 3|    a|   m3|
| 3|    b|   m4|
| 3|    c|   m5|
| 3|    d|   m1|
| 3|    e|   m2|
| 3|    f|   m3|
| 3|    g|   m4|
| 3|    h|   m5|
+--+-----+-----+

输出格式:

+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|id|a  |b  |c  |d  |e  |f  |g  |h  |i  |k |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
| 1| m1| m2| m3| m4| m1| x | x | x | x | x|
| 2| x | m2| m3| x | x | m1| m3| m4| m1|m2|
| 3| m3| m4| m5| m1| m2| m3| m4| m5| x | x|
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+

我希望大约有600个唯一的“名称”列和几百万个id列。

好像我可以绕过name列,但是我需要按原样的字符串值,而无需任何聚合。

val grouped_ds = ds.groupBy("id","LoanID").pivot("name").agg("value"???)

感谢您的帮助。

0 个答案:

没有答案