将文件从s3复制到redshift花费的时间太长

时间:2016-08-16 19:10:44

标签: amazon-s3 amazon-redshift

我使用AWS将{S3}桶中的COPY日志文件发送到Redshift群集中的表。每个文件大约有100MB,我还没有'gziped'。我现在有600个这样的文件,而且还在增长。我的群集有2个dc1.large个计算节点和一个领导节点。

问题是,COPY操作时间太长,至少40分钟。加快速度的最佳方法是什么?

1)为节点获取更多节点或更好的机器?

2)如果我gzip文件,它在COPY操作时间增益方面真的很重要吗?

3)这是一些有用的设计模式吗?

1 个答案:

答案 0 :(得分:4)

的Rodrigo,

以下是答案:

1 - 在更改硬件设置之前,您可以进行一些优化。您必须进行测试,但在确保完成所有优化后,如果仍需要更好的性能,我建议使用更多节点。

2 - Gzipped文件可能会提升性能。但我怀疑您还需要先做其他优化。请参阅Redshift文档中的此建议:http://docs.aws.amazon.com/redshift/latest/dg/c_best-practices-compress-data-files.html

3 - 以下是您应该按重要性顺序查看的内容:

  1. 分发键 - 您的分发键是否在多个切片中提供了良好的分布?如果你有一个“坏”的分配密钥,那就可以解释你所看到的问题。
  2. 编码 - 确保编码是最佳的。使用ANALYZE COMPRESSION命令。
  3. 排序键 - 您是否选择了适合此类别的排序键 表。拥有一个好的排序键可以产生巨大的影响 压缩,进而影响读写时间。
  4. 真空 - 如果您在此表中进行了多次测试,那么您是否在测试之间进行了抽真空。删除或更新后,Redshift不会删除数据(更新将作为删除和插入处理,而不是就地更新)。
  5. 多个文件 - 您应该拥有大量文件。您已经这样做了,但对于试图将数据加载到Redshift中的人来说,这可能是一个很好的建议。
  6. 清单文件 - 使用清单文件允许Redshift并行化您的负载。
  7. 即使在双节点群集中,我预计60GB的负载也会比你看到的更快。检查这6项,告诉我们。

    由于

    @BigDataKid