amazon-web-services - 将大型数据集从 Redshift 卸载到 S3 失败并出现 I/O 错误

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

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

我认为导出和重新导入数据可能比尝试通过或多或少地循环读取/写入如此多的数据来滥用集群更有效。

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

An I/O error occured while sending to the backend.



这是一个相当大的数据块……目前有 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 个小时没有错误:
  • 从 TO 字段中删除文件名
  • 仅为此进程创建了一个新存储桶
  • 将 GZIP 和 PARALLEL 选项添加到查询

  • 这是基于我可能会超出存储桶容量和/或每个文件的最大对象大小的想法。

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

    专业提示 :在执行这样的大型卸载时,请密切关注 AWS Redshift 控制台中查询的状态(当您深入查看集群详细信息时,您会在其中一个“选项卡”中找到它)。我为此使用了 SQL Workbench J。大约 5 个小时后,SQL Workbench J 显示查询仍在运行。但是 AWS Redshift 控制台显示它已经完成并且确实如此。

    最佳答案

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

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

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

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

    关于amazon-web-services - 将大型数据集从 Redshift 卸载到 S3 失败并出现 I/O 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24965590/

    相关文章:

    amazon-web-services - 无法在控制台中设置 AWS ECS 服务自动缩放

    amazon-web-services - Amazon S3 上的 Presto

    xml - 使用 Apache Flink 将数据推送到 S3

    go - Redshift 返回 []uint8 而不是整数,它们之间的转换返回不正确的值

    amazon-web-services - 输出和导出之间的区别

    django - 在 AWS 弹性 beantalk 上部署 django 项目

    angularjs - 将文件上传到 s3 服务器时出错(请使用 AWS4-HMAC-SHA256)

    amazon-s3 - 将 Nuxt PWA 部署到 s3

    mysql - 将查询从 MySQL 导出到 Redshift

    mysql - 将 RDS (MySQL) 架构自动复制到 AWS Redshift 的最佳方法是什么?