【问题标题】:Exception handling in Bulk Copying to Amazon Redshift Using Avro files使用 Avro 文件批量复制到 Amazon Redshift 中的异常处理
【发布时间】:2020-08-19 22:55:53
【问题描述】:

我正在尝试将 S3 中的 avro 文件加载到 Redshift 中的表中。 Avro 文件之一的格式不正确。问题是当复制命令尝试加载该文件时,它会引发异常并且不会为正确的文件运行复制。如何跳过格式错误的文件和 c opy 正确的文件?这是我加载文件的代码:

COPY tmp.table
FROM 's3://{BUCKET}/{PREFIX}'
IAM_ROLE '{ROLE}' 
FORMAT AVRO 's3://{BUCKET}/{AVRO_PATH}'

我得到的错误是:

  code:      8001
  context:   Cannot init avro reader from s3 file Incorrect Avro container file magic number 
  query:     19308992
  location:  avropath_request.cpp:438
  process:   query0_125_19308992 [pid=23925]

【问题讨论】:

  • 在 s3 存储桶前缀组合中是否还有其他以相同前缀开头但不是 avro 的文件?这是使用 Spark 之类的东西而不使用清单文件进行 Redshift Copy 时的常见问题。编辑:重新阅读问题后,我了解您想要做什么,这是不可能的。 Redshift 将尝试处理 s3 路径上的所有文件。
  • 感谢@B.Pesevski 回答这个问题。不,我没有任何其他具有相同前缀的文件。我所做的是手动将 avro 文件中的一个字段更改为与预期不同的格式,我得到了这个错误

标签: json exception amazon-s3 amazon-redshift avro


【解决方案1】:

您可以预处理 s3://{BUCKET}/{PREFIX} 文件并创建一个清单文件,其中仅包含具有正确格式/架构的 Avro 文件。 Redshift 无法为您执行此操作,并将尝试处理 s3://{BUCKET}/{PREFIX} 路径上的所有文件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-10-16
    • 2016-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-24
    • 1970-01-01
    相关资源
    最近更新 更多