【发布时间】:2016-02-17 08:56:12
【问题描述】:
我是 spark 新手,我想transform source dataframe(从 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中两列的主键)
【问题讨论】:
标签: python apache-spark dataframe apache-spark-sql rdd