我在美国西部使用 ds2.xlarge Redshift 集群,数据量约为 1TB。我正在尝试将 50GB 的表卸载到同一区域中的 S3 存储桶,如下所示:
UNLOAD ('select * from table_name') TO 's3://bucket/folder_name/'
CREDENTIALS 'aws_access_key_id=foo;aws_secret_access_key=bar'
MANIFEST;
此查询大约需要 1 小时才能运行。这似乎令人惊讶,因为 Amazon 网站说我们的集群的 I/O 为 0.5GB/s,这意味着 50GB 的表应该用不到 2 分钟的时间上传到 S3,而不是一个小时。 (比广告慢 20-30 倍)
有没有其他人遇到过这个问题和/或找到了修复/解决方法?如果我们决定使用 Redshift,我们每天需要将大约 200GB 的数据从 Redshift 移动到 S3。
最佳答案
对于 Redshift 来说,“重新实现”完整行的成本非常高。这就是 S3 卸载比总磁盘 I/O 慢得多的原因。
数据以针对检索单个列进行优化的方式存储在磁盘上。重新创建完整的行会(有效地)生成随机 I/O 访问。在基于 SSD 的节点类型上,您的卸载速度将多。
如果您想验证这一点,您可以将所有列(分隔)写入一个包含 1 个 VARCHAR(MAX)
列的表中 - 这会非常慢。然后卸载该表 - 这会快得多。
关于amazon-web-services - Redshift 卸载到 S3 非常慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41667354/