我有一個壓縮的s3文件。我想將它插入到RedShift數據庫中。我的研究發現這樣做的唯一方法是啓動一個ec2實例。將文件移到那裏,解壓縮,然後發回S3。然後將其插入到我的RedShift表中。但我試圖從外部機器的JavaSDK完成這一切,並且不想使用Ec2實例。有沒有辦法讓EMR作業解壓文件?或者將壓縮文件直接插入RedShift?將壓縮文件插入RedShift
文件的.zip文件不.GZIP
我有一個壓縮的s3文件。我想將它插入到RedShift數據庫中。我的研究發現這樣做的唯一方法是啓動一個ec2實例。將文件移到那裏,解壓縮,然後發回S3。然後將其插入到我的RedShift表中。但我試圖從外部機器的JavaSDK完成這一切,並且不想使用Ec2實例。有沒有辦法讓EMR作業解壓文件?或者將壓縮文件直接插入RedShift?將壓縮文件插入RedShift
文件的.zip文件不.GZIP
您不能直接插入一個壓縮文件到紅移按Guy的評論。
假設這不是1次任務,我建議使用AWS Data Pipeline來執行此項工作。 See this example of copy data between S3 buckets.修改示例以解壓縮,然後gzip數據而不是簡單地複製它。使用ShellCommandActivity
來執行一個執行工作的shell腳本。如果您選擇適當的AMI作爲您的EC2資源(YMMV),我會假定此腳本可以調用Java。
數據管道對於此類工作非常有效,因爲它會自動啓動和終止EC2資源,並且您不必擔心在腳本中發現新實例的名稱。
添加gzip
選項,請參閱:http://docs.aws.amazon.com/redshift/latest/dg/c_loading-encrypted-files.html 我們可以使用Java客戶端執行SQL
如果你的文件是gzip的請嘗試以下命令從「S3
副本可變:// ABC/DEF/yourfilename.gz 'CREDENTIALS 'aws_access_key_id = XXXXX; aws_secret_access_key = YYYYYY' 分隔符',」 gzip的
我特別說過,我的文件不是GZIP,但是在ZIP中 –
紅移支持GZIP作爲壓縮輸入(低級S3成本和更快的加載時間)的方式。在COPY命令中使用GZIP標誌。 – Guy
在一種情況下,文件被壓縮(超出我的控制範圍)而不是gziped是否有壓縮選項? –
據我所知,尚未。您需要將其上傳和gzip。您可以使用Java來做到這一點,並使用正確的壓縮方式將其返回到S3。 – Guy