首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PySpark -数据字典

PySpark -数据字典
EN

Stack Overflow用户
提问于 2022-08-16 11:13:06
回答 1查看 159关注 0票数 -1

我正在寻找一种最优雅和有效的方法,用描述的输出和输入将字典转换为带有PySpark的火花数据帧。

输入:

代码语言:javascript
复制
data = {"key1" : ["val1", "val2", "val3"], "key2" : ["val3", "val4", "val5"]}

输出:

代码语言:javascript
复制
 vals  |  keys
------------
"val1" | ["key1"]
"val2" | ["key1"]
"val3" | ["key1", "key2"]
"val4" | ["key2"]
"val5" | ["key2"]

编辑:我更喜欢用火花来做大部分的操作。也许先把它转换成

代码语言:javascript
复制
 vals  |  keys
------------
"val1" | "key1"
"val2" | "key1"
"val3" | "key1"
"Val3" | "key2"
"val4" | "key2"
"val5" | "key2"
EN

回答 1

Stack Overflow用户

发布于 2022-08-16 16:02:01

首先,从字典项构建星火数据。然后explode vals,然后按包含该值的valscollect all keys进行分组。

代码语言:javascript
复制
from pyspark.sql import functions as F

data = {"key1" : ["val1", "val2", "val3"], "key2" : ["val3", "val4", "val5"]}

df = spark.createDataFrame(data.items(), ("keys", "vals"))

(df.withColumn("vals", F.explode("vals"))
  .groupBy("vals").agg(F.collect_list("keys").alias("keys"))
).show()

"""
+----+------------+
|vals|        keys|
+----+------------+
|val1|      [key1]|
|val3|[key1, key2]|
|val2|      [key1]|
|val4|      [key2]|
|val5|      [key2]|
+----+------------+
"""
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73373066

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档