【问题标题】:Copy files from s3 to redshift is taking too long将文件从 s3 复制到 redshift 花费的时间太长
【发布时间】:2016-08-16 19:10:43
【问题描述】:

我正在使用 AWS 将我的 S3 存储桶中的 COPY 日志文件记录到我的 Redshift 集群内的一个表中。每个文件大约有 100MB,我还没有'gziped' 他们。我现在有 600 个这些文件,而且还在增长。我的集群有 2 个dc1.large 计算节点和一个领导节点。

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

1) 获得更多节点或为节点提供更好的机器?

2) 如果我对文件进行 gzip 压缩,那么在COPY 操作时间增益方面真的很重要吗?

3) 有什么设计模式在这里有帮助吗?

【问题讨论】:

    标签: amazon-s3 amazon-redshift


    【解决方案1】:

    罗德里戈,

    以下是答案:

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

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

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

    1. 分发密钥——您的分发密钥是否提供跨多个切片的良好分发?如果您有一个“错误”的分发密钥,那就可以解释您遇到的问题。
    2. 编码 -- 确保编码是最佳的。使用分析压缩命令。
    3. 排序键 -- 您是否选择了适合此的排序键 桌子。拥有一个好的排序键会对 压缩,进而影响读取和写入时间。
    4. 真空 -- 如果您已经在此表中执行了多个测试,您是否在测试之间进行了真空。 Redshift 不会在删除或更新后删除数据(更新被处理为删除和插入,而不是就地更新)。
    5. 多个文件 -- 您应该有大量文件。您已经这样做了,但是对于尝试将数据加载到 Redshift 的人来说,这可能是一个很好的建议。
    6. 清单文件 -- 使用清单文件允许 Redshift 并行化您的负载。

    我预计 60GB 的负载会比您看到的更快,即使在 2 节点集群中也是如此。检查这 6 项并告诉我们。

    谢谢

    @BigDataKid

    【讨论】:

    • 4 个节点和 gzip 文件耗时 20 分钟。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-03-06
    • 2018-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-20
    • 2011-12-06
    相关资源
    最近更新 更多