首页 > 解决方案 > 我们如何从多字典创建 pyspark 数据框

问题描述

字典 = {11: {101, 102}, 22: {111, 112, 101}, 33: {101}, 44: {102}}

期望的输出:使用火花变换

-------+-------+
|user_id|team_id|
+-------+-------+
|     11|    101|
|     11|    102|
|     22|    111|
|     22|    112|
|     22|    101|
|     33|    101|
|     44|    102|
+-------+-------+

后来我也想将此结构保存到不同的数据库中。

标签: python-3.xapache-sparkpyspark

解决方案


一种方法是将您的dict 转换为 lists 列表,然后explode将您的team_id列转换为 spark 。

from pyspark.sql import functions as F

df=spark.createDataFrame([[x,list(y)] for x,y in dict.items()],['user_id','team_id'])

df.select("user_id", F.explode("team_id").alias("team_id")).show()

+-------+-------+
|user_id|team_id|
+-------+-------+
|     11|    101|
|     11|    102|
|     22|    112|
|     22|    101|
|     22|    111|
|     33|    101|
|     44|    102|
+-------+-------+

推荐阅读