我有一个压缩的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