【发布时间】:2020-07-09 15:33:54
【问题描述】:
我们使用 UNLOAD 命令在基于 s3 的外部表上运行一些转换,并将数据以 PARQUET 格式发布到不同的 s3 存储桶中。
我在卸载操作中使用 ALLOWOVERWRITE 选项来替换已经存在的文件。这在大多数情况下都可以正常工作,但有时会为相同的数据插入重复文件,这会导致外部表显示重复的数字。
例如,如果分区中的 parquet 是包含完整数据的 0000_part_00.parquet。在下一次运行中,卸载预计会覆盖此文件,而是插入新文件 0000_part_01.parquet,这会使总输出加倍。
如果我只是清理整个分区并再次运行,这将不再重复。这种不一致使我们的系统变得不可靠。
unload (<simple select statement>)
to 's3://<s3 bucket>/<prefix>/'
iam_role '<iam-role>' allowoverwrite
PARQUET
PARTITION BY (partition_col1, partition_col2);
谢谢。
【问题讨论】:
-
你应该使用
CLEANPATH而不是ALLOWOVERWRITE
标签: amazon-s3 amazon-redshift amazon-redshift-spectrum