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

AWS Glue可视化编辑器写Redshift出现数据重复问题求助

解决AWS Glue可视化编辑器Redshift节点重复写入旧数据问题

问题核心

之前的Glue Job通过from_catalog写入Redshift时,会自动利用Glue Data Catalog中的分区信息(爬虫每日同步新增文件夹为分区),只写入当日新增数据;新生成的Job用from_options直接读取全量数据源,导致旧分区数据被重复写入,且无法通过可视化编辑器修改代码。

无需修改代码的解决步骤

1. 重置Redshift节点配置

  • 删除当前画布上的Redshift节点,重新拖拽一个新的Redshift节点
  • 连接数据源节点到新Redshift节点,配置时严格选择「Glue Data Catalog tables」作为访问类型,不要选JDBC连接
  • 选择对应数据库和Redshift Catalog表,保持「Write mode」为APPEND,不要添加任何自定义SQL或preactions

2. 确保数据源使用Catalog分区表

  • 数据源节点必须指向Glue Catalog中被爬虫维护的Parquet分区表,而非直接指向S3路径
  • 在数据源节点的过滤设置中,添加动态分区过滤规则(比如按当日日期分区),确保只读取当日新增数据

3. 验证生成代码

配置完成后,查看自动生成的代码,确认回到from_catalog模式(如下方正常代码示例),而非from_options。

代码对比

此前正常的写入代码(from_catalog)

# Script generated for node Redshift Cluster
RedshiftCluster_node3 = glueContext.write_dynamic_frame.from_catalog(
    frame=SelectFields_node1654607509850,
    database="databasename",
    table_name="table_name",
    redshift_tmp_dir=args["TempDir"],
    transformation_ctx="RedshiftCluster_node3",
)

导致重复写入的代码(from_options)

# Script generated for node Amazon Redshift
AmazonRedshift_node3 = glueContext.write_dynamic_frame.from_options(
    frame=SelectFields_node16899376351254,
    connection_type="redshift",
    connection_options={
        "redshiftTmpDir": "s3://aws-glue-assets-560267457632-us-east-1/temporary/",
        "useConnectionProperties": "true",
        "dbtable": "public.tablename",
        "connectionName": "RedshiftJDBCConnectionName",
        "preactions": "CREATE TABLE IF NOT EXISTS public.tablename (col1 VARCHAR, col2 VARCHAR);",
    },
    transformation_ctx="AmazonRedshift_node3",
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 18:22:24