6

我在 s3 中有一个压缩文件。我想将它插入 RedShift 数据库。我的研究发现这样做的唯一方法是启动一个 ec2 实例。将文件移到那里,解压缩,然后将其发送回 S3。然后将其插入我的 RedShift 表中。但我试图从外部机器的 JavaSDK 完成这一切,并且不想使用 Ec2 实例。有没有办法让 EMR 作业解压缩文件?还是将压缩文件直接插入 RedShift?

文件是 .zip 而不是 .gzip

4

3 回答 3

10

根据 Guy 的评论,您不能直接将压缩文件插入 Redshift。

假设这不是 1 次任务,我建议使用 AWS Data Pipeline 来执行这项工作。请参阅此 S3 存储桶之间复制数据的示例。修改示例以解压缩然后 gzip 您的数据,而不是简单地复制它。

使用ShellCommandActivity来执行执行工作的 shell 脚本。如果您选择并适当的 AMI 作为您的 EC2 资源 (YMMV),我会假设此脚本可以调用 Java。

Data Pipeline 对于此类工作非常高效,因为它会自动启动和终止 EC2 资源,而且您不必担心在脚本中发现新实例的名称。

于 2013-07-23T11:01:05.947 回答
2

添加gzip选项,请参考:http ://docs.aws.amazon.com/redshift/latest/dg/c_loading-encrypted-files.html 我们可以使用Java客户端执行SQL

于 2014-06-13T07:52:14.877 回答
-3

如果您的文件是 gzip,请尝试以下命令

从 's3://abc/def/yourfilename.gz' CREDENTIALS 'aws_access_key_id=xxxxx;aws_secret_access_key=yyyyyy' delimiter ',' gzip复制可变

于 2014-06-13T17:05:34.880 回答