2013-07-19 37 views
4

我有一個壓縮的s3文件。我想將它插入到RedShift數據庫中。我的研究發現這樣做的唯一方法是啓動一個ec2實例。將文件移到那裏,解壓縮,然後發回S3。然後將其插入到我的RedShift表中。但我試圖從外部機器的JavaSDK完成這一切,並且不想使用Ec2實例。有沒有辦法讓EMR作業解壓文件?或者將壓縮文件直接插入RedShift?將壓縮文件插入RedShift

文件的.zip文件不.GZIP

+2

紅移支持GZIP作爲壓縮輸入(低級S3成本和更快的加載時間)的方式。在COPY命令中使用GZIP標誌。 – Guy

+0

在一種情況下,文件被壓縮(超出我的控制範圍)而不是gziped是否有壓縮選項? –

+0

據我所知,尚未。您需要將其上傳和gzip。您可以使用Java來做到這一點,並使用正確的壓縮方式將其返回到S3。 – Guy

回答

9

您不能直接插入一個壓縮文件到紅移按Guy的評論。

假設這不是1次任務,我建議使用AWS Data Pipeline來執行此項工作。 See this example of copy data between S3 buckets.修改示例以解壓縮,然後gzip數據而不是簡單地複製它。使用ShellCommandActivity來執行一個執行工作的shell腳本。如果您選擇適當的AMI作爲您的EC2資源(YMMV),我會假定此腳本可以調用Java。

數據管道對於此類工作非常有效,因爲它會自動啓動和終止EC2資源,並且您不必擔心在腳本中發現新實例的名稱。

-2

如果你的文件是gzip的請嘗試以下命令從「S3

副本可變:// ABC/DEF/yourfilename.gz 'CREDENTIALS 'aws_access_key_id = XXXXX; aws_secret_access_key = YYYYYY' 分隔符',」 gzip的

+1

我特別說過,我的文件不是GZIP,但是在ZIP中 –