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
相关产品推荐
相关产品推荐

