我火花新手,我想下面源数据帧(负载从JSON文件)转换:下面结果数据帧火花数据帧变换多行
+--+-----+-----+
|A |count|major|
+--+-----+-----+
| a| 1| m1|
| a| 1| m2|
| a| 2| m3|
| a| 3| m4|
| b| 4| m1|
| b| 1| m2|
| b| 2| m3|
| c| 3| m1|
| c| 4| m3|
| c| 5| m4|
| d| 6| m1|
| d| 1| m2|
| d| 2| m3|
| d| 3| m4|
| d| 4| m5|
| e| 4| m1|
| e| 5| m2|
| e| 1| m3|
| e| 1| m4|
| e| 1| m5|
+--+-----+-----+
进入:
+--+--+--+--+--+--+
|A |m1|m2|m3|m4|m5|
+--+--+--+--+--+--+
| a| 1| 1| 2| 3| 0|
| b| 4| 2| 1| 0| 0|
| c| 3| 0| 4| 5| 0|
| d| 6| 1| 2| 3| 4|
| e| 4| 5| 1| 1| 1|
+--+--+--+--+--+--+
这里是转化规律:
结果数据帧是由具有
A + (n major columns)
其中major
列名由指定:sorted(src_df.map(lambda x: x[2]).distinct().collect())
结果数据帧包含
m
行,其中通过提供用于A
列的值:sorted(src_df.map(lambda x: x[0]).distinct().collect())
每个专业的价值结果数据帧中的列是来自相应的
A
上的源数据帧的值和主要的 (例如,在源数据帧中第1行的计数被映射到box
其中A
是a
和列m1
)在源数据帧
A
和major
的组合不具有重复(请考虑它在所述两列的主键SQL)
我试图来从现有的数据库与表的确切格式的一些数据,如每“A”各行“大”代表一个功能到'A',所以我需要将数据帧转换为我发布的格式,以便将数据移植到spark ALS计算中。 – resec
不要让我知道我是否以错误的方式使用火花,并且应该在火花之外进行这种数据转换。 – resec