我在美国西部使用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小时才能运行。这似乎令人惊讶,因为亚马逊网站说我们的群集的I / O为0.5GB / s,这意味着50GB的表应该花不到2分钟上传到S3,而不是一小时。 (比宣传的慢20-30倍)
是否有其他人遇到此问题和/或找到了修复/解决方法?如果我们决定使用Redshift,我们需要每天将大约200GB的数据从Redshift移动到S3。
答案 0 :(得分:0)
数据以优化的方式存储在磁盘上,以便检索单个列。重新创建完整行会生成(有效)随机I / O访问。在基于SSD的节点类型上,卸载速度会快 。
如果要验证这一点,可以将所有列(分隔符)写入包含1 VARCHAR(MAX)
列的表中 - 这将非常慢。然后卸载该表 - 这将更快。