【问题标题】:Amazon redshift: load Avro files compressed using BZIP2Amazon redshift:加载使用 BZIP2 压缩的 Avro 文件
【发布时间】:2016-09-19 18:56:14
【问题描述】:

我有存储在 HDFS 和 S3 中的 Avro 文件(使用 BZIP2 压缩),我想将它们加载到 Amazon Redshift 中。复制命令报错:

 error:  Invalid AVRO file
 code:      8001
 context:   Cannot init avro reader from s3 file File header contains an unknown codec 

Redshift 不支持压缩的 Avro 文件吗?

如果是这种情况,将这些数据加载到 Redshift 中的下一个最佳选择是什么(不将它们转换回未经压缩的 Avro 文件)。

我可以使用 sqoop 吗?

【问题讨论】:

  • 您是否在 COPY 命令中指定了format as avro。你能分享你的复制命令语法示例吗

标签: amazon-redshift


【解决方案1】:

Redshift 确实支持压缩的 avro 文件。

要加载使用 gzip、lzop 或 bzip2 压缩的数据文件,请在复制命令中包含相应的选项:GZIP、LZOP 或 BZIP2。

另外,您需要提及 avro 格式并提供 json 路径。下面是我用过的代码,它可以工作。

    copy <tablename> from '<s3 path - abc.avro.gz>'
    credentials 'aws_access_key_id=<access-key>;aws_secret_access_key=<secret access key>'
    format as avro '<json path for avro format>'
    gzip;

【讨论】:

【解决方案2】:

这个聚会有点晚了。

Redshift 仅接受使用 deflate 或 Snappy 压缩的压缩 Avro。

来自文档:

Avro 是一种数据序列化协议。 Avro 源文件包括 定义数据结构的模式。 Avro 模式类型 必须记录。 COPY 接受使用默认创建的 Avro 文件 未压缩的编解码器以及 deflate 和 snappy 压缩 编解码器。有关 Avro 的更多信息,请转到 Apache Avro。

Redshift docs

最初的问题可能已经解决了,但这可能对将来的某人有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-12
    • 1970-01-01
    • 2017-12-30
    相关资源
    最近更新 更多