【问题标题】:Ignore all invalid records while copy data from s3 to redshift将数据从 s3 复制到 redshift 时忽略所有无效记录
【发布时间】:2019-02-21 20:14:20
【问题描述】:

我正在将数十亿条记录从 s3(多个文件)复制到有无效记录的 redshift 表中。我想在将数据从 s3 复制到 redshift 时忽略所有无效记录。但是当我检查“MAXERROR”限制是“100000”。但在我的情况下,无效记录的总数大于“100000”。将数据复制到红移表时,有没有办法忽略所有无效记录?

但就我而言,每个 s3 文件的无效记录不会超过“100000”。如果我为每个文件配置“MAXERROR”,那么我可以解决这个问题,但我没有找到任何参考?

是否可以为每个文件配置“MAXERROR”?如果没有,有没有其他替代方法来解决这个问题?

【问题讨论】:

    标签: amazon-web-services amazon-s3 amazon-redshift amazon-data-pipeline


    【解决方案1】:

    MAXERROR 根据复制命令进行检查,并且由于 Amazon Redshift 的并行特性,它允许您并行处理多个 S3 文件以加快加载速度,但所有复制节点异步共享单个 MAXERROR 值。当然,并行运行时会出现预期的不一致,这就是 AWS 指南指出实际 ERROR_COUNT 可能超出 MAXERROR 的原因。

    由于 Amazon Redshift 的并行特性,实际报告的错误数可能大于指定的 MAXERROR。如果 Amazon Redshift 集群中的任何节点检测到已超出 MAXERROR,则每个节点都会报告其遇到的所有错误。

    TLDR; 简而言之,回答您的问题:不,您不能为每个 S3 文件定义 MAXERROR
    但要实现所需结果,您可以将负载分解为多个复制命令,并通过key_prefix 一次处理较小的 S3 文件块。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-09-12
      • 1970-01-01
      • 2019-04-23
      • 2013-05-31
      • 1970-01-01
      • 1970-01-01
      • 2018-01-26
      相关资源
      最近更新 更多