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

使用AWS Glue Job迁移DynamoDB时整数变为Null的问题求助

问题根因

源DynamoDB的amount字段为N类型,存储的整数会被AWS Glue解析为int类型,而你当前的ApplyMapping配置强制指定源类型为double,类型不匹配导致Glue无法识别这些整数记录,最终转为Null;小数会被解析为double类型,因此能正常映射。

解决方案

方案1:修改ApplyMapping的源类型为numeric

DynamoDB的N类型对应Glue的numeric类型,可同时兼容整数和小数。调整后的配置如下:

frame=AWSGlueDataCatalog_node16,
    mappings=[
        ("amount", "numeric", "amount", "double")
       ],
    transformation_ctx="ChangeSchemaApplyMapping_node12"

方案2:自定义类型转换逻辑(更灵活)

如果方案1未解决问题,可在读取源数据后,通过Spark函数统一将amount字段转为double类型,再执行后续映射或写入操作:

from pyspark.sql.functions import col, cast

# 读取源表数据后,先处理amount字段
processed_frame = frame.withColumn("amount", col("amount").cast("double"))

# 后续可直接用processed_frame执行写入目标DynamoDB的操作,或继续参与ApplyMapping流程
验证步骤
  1. 调整配置后运行测试Job,抽取部分包含整数和小数的样本数据
  2. 检查目标DynamoDB表中amount字段的数值是否完整,整数不再为Null,小数保持正确精度

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 16:52:06