python-3.x - 我们如何从多字典创建 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|
+-------+-------+
后来我也想将此结构保存到不同的数据库中。
解决方案
一种方法是将您的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|
+-------+-------+
推荐阅读
- rpc - How to pass a dict parameter from Python to Frida RPC JavaScript function?
- java - 403 Forbidden 当使用@Secured Spring Security
- python - 如何在 Python 的同一张图中绘制两个或多个重叠的 3-D 高斯曲面?
- sas - compute variable after datalines
- javascript - 如何调用另一个组件中的函数(方法)?
- ios - 我可以在自定义框架中添加 Pod 吗?
- azure-devops - Azure DevOps API - 设置板选项
- ios - 当 UITable 视图在下拉 iOS 中显示和隐藏时如何向上/向下移动视图
- java - 使用 Maven 在 JRE 6 下编译执行
- sockets - socket.broadcast.to().emit() 与 socket.to().emit()