2016-05-23 47 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