2016-05-23 51 views
1

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

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吗?

回答

0

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; 
+0

你并不需要指定一个JSON的路径,如果你仅仅使用文件的内置模式 - 可以做“格式的Avro‘自动’”,看到http://docs.aws。 amazon.com/redshift/latest/dg/r_COPY_command_examples.html#copy-from-avro-examples-using-auto – subelsky