You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS Glue如何将DynamicFrame列值作为新列添加至另一DynamicFrame

实现方案

核心逻辑为对第一个DynamicFrame做*行转列(Pivot)*处理,再按id字段和第二个DynamicFrame左关联,无匹配的位置会自动填充null(即要求的留空效果)。

代码实现(AWS Glue PySpark)

步骤1:将DynamicFrame转为Spark DataFrame

Glue DynamicFrame可以无缝转换为Spark DataFrame,使用Spark原生的pivot接口处理行转列效率更高:

# 假设你已通过Glue读取到两个源DynamicFrame:dyf_table1(对应表1)、dyf_table2(对应表2)
df_table1 = dyf_table1.toDF()
df_table2 = dyf_table2.toDF()

步骤2:对表1执行行转列操作

将name列的唯一取值转换为独立列,列值取对应value字段:

# 可选优化:提前获取所有name的唯一值,减少pivot阶段的计算开销,适合name取值固定的场景
name_unique_list = [row["name"] for row in df_table1.select("name").distinct().collect()]
pivot_df = df_table1.groupBy("id")\
                    .pivot("name", name_unique_list)\
                    .agg({"value": "first"})
# 注:聚合函数用first是默认同一个id+name组合下value唯一,如果有重复值可按需替换为sum、avg等逻辑

步骤3:左连接表2获取最终结果

result_df = df_table2.join(pivot_df, on="id", how="left")

步骤4:转回Glue DynamicFrame(可选)

如果后续需要继续使用Glue的原生转换能力,可将结果转回DynamicFrame:

from awsglue.dynamicframe import DynamicFrame
result_dyf = DynamicFrame.fromDF(result_df, glueContext, "result_dynamic_frame")

内容的提问来源于stack exchange,提问作者Tasho Georgiev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 05:36:07