AWS Glue PySpark中将groups逗号分隔字段拆分为多行实现数据反规范化
解决方案
你需要组合使用split和explode两个PySpark SQL函数实现需求:split负责将逗号分隔的groups字符串转换为数组,explode负责将数组内的每个元素展开为独立行,其余字段内容会跟随自动复制,完全匹配你要的输出效果。你之前只用split只能得到数组类型的单列,而不是多行,缺少explode展开数组的步骤,所以达不到预期效果。
具体实现步骤
- 首先导入依赖函数
from pyspark.sql.functions import split, explode # 若需要兼容groups为空、null的场景,额外导入explode_outer # from pyspark.sql.functions import explode_outer
- 核心转换代码(假设你加载好的原始DataFrame名为
df)
result_df = df.withColumn("group", explode(split("groups", ","))) # 若不需要保留原始的groups字段,可追加.drop("groups") # 若需要处理groups为空、null的场景不丢失原行,将explode替换为explode_outer即可
处理后的result_df就已经是你要的每行对应一个分组的格式,导出为文本时指定分隔符为;即可和你给出的目标输出完全一致。
内容的提问来源于stack exchange,提问作者Jaco Van Niekerk
相关产品推荐
相关产品推荐

