将大数据集从Redshift卸载到S3失败,出现I / O错误

时间:2014-07-25 22:44:02

标签: amazon-web-services amazon-s3 amazon-redshift

我真正想要完成的是改变几列的数据类型。特别是一些存储为需要日期的字符串的列。我试图使用具有类似问题的CREATE TABLE / SELECT命令。 I / O错误或连接断开。

我认为导出和重新导入数据可能比通过在圈子中读取/写入如此多的数据来滥用群集更有效。

我已经尝试过配置了超时(10小时)的Aginity Workbench和SQL Workbench J. SQL Workbench J今天设法运行了2小时12分钟,然后失败了,我一遍又一遍地看到同样的错误。

  

发送到后端时发生I / O错误。

这是一大块数据...目前有2,028,448,405行(我说“目前”因为我们每天增加大约7000万行)。但我希望Redshift能够轻松应对这一问题。

  

UNLOAD ( 'select weekday, day, month, year, guid,

      ...,

      colN
  from actions a
  where a.colN in (\'my\',\'penguin\',\'lolz\')'
)
TO 's3://penguin-lolz-bucket/all.csv' 
CREDENTIALS 'aws_access_key_id=$id;aws_secret_access_key=$key
ALLOWOVERWRITE;</code>

谷歌搜索错误消息刚刚引发了大量关于超时配置或一般连接问题的帖子。

更新1:

因此进行了一些更改,到目前为止,查询已运行3个小时且没有错误:

  1. 从“收件人”字段中删除了文件名
  2. 仅为此过程创建了一个新存储桶
  3. 在查询中添加了GZIP和PARALLEL选项
  4. 这是基于我可能会超出每个文件的容量和/或最大对象大小的想法。

    更新2: UNLOAD现在按预期执行。 (在我在更新1中做出的更改之后)

    专业提示:在进行大量卸载时,请关注AWS Redshift控制台中查询的状态(当您使用时,您会在其中一个“标签”中找到它深入了解群集详细信息)。我正在使用SQL Workbench J。大约5个小时后,SQL Workbench J显示查询仍在运行。但是,AWS Redshift控制台显示它已完成且确实如此。

1 个答案:

答案 0 :(得分:1)

这是由于您的查询需要很长时间并且SQL Workbench断开连接。

您可以使用PHP或shell编写小脚本(使用pgsql_connect)并使用卸载查询。

确保在后台运行脚本。如果您从本地PC运行脚本,请确保它未与网络断开连接。

其他选项是如果EC2实例在EC2上运行脚本。