【问题标题】:Speedup my data load operation加快我的数据加载操作
【发布时间】:2017-08-02 12:55:02
【问题描述】:

如果这个问题在这里的专家听众听起来很傻,请原谅我的无知

目前根据我的用例 我正在对 aws redshift 表中存在的数据执行某些分析,并将它们保存为 s3 存储桶中的 csv 文件 (操作有点类似于Pivot for redshift database) 然后我使用复制命令将数据更新回redshift db

目前在对 200 个 csv 文件执行分析(在 python3 中完成)后,这些文件保存在 redshift 中的 200 个不同的表中

csv 的数量会随着时间不断增加 目前整个过程大约需要50-60分钟才能完成

25 分钟获取大约 200 个 csv 并在 s3 存储桶中更新它们

25 分钟将大约 200 个 csv 更新为 200 个 aws 红移表

csv 的大小从几 MB 到 1GB 不等

我一直在寻找可以帮助我减少时间的工具或 aws 技术

*附加信息

csv 的结构不断变化。因此我必须删除并再次创建表 这将是一项重复性任务,每 6 小时执行一次

【问题讨论】:

  • Redshift 对于您正在尝试做的事情可能不是一个好的用例。 Redshift 真正用于数据仓库。我从个人经验中发现,除非您阅读他们的最佳实践文档,否则 Redshift 充满了您会遇到的陷阱。如果您想做诸如不断生成报告之类的事情,不妨考虑使用 EMR。

标签: python amazon-web-services amazon-redshift bigdata


【解决方案1】:

您可以通过以下方式实现显着加速:

  1. 使用CSV的分段上传到S3,所以不用等待单个文件上传,分段上传将文件并行上传到S3,为您节省大量时间。阅读herehereHere 是它的 Boto3 参考。
  2. 将数据从 S3 并行复制到 Redshift。如果将文件拆分为多个部分,然后运行 ​​COPY 命令,数据将从多个文件并行加载,而不是等待 1 GB 的文件加载,这可能非常慢。阅读更多关于它的信息here

希望这会有所帮助。

【讨论】:

  • 如果您认为该问题回答了您的问题,请将其标记为“已接受”。
【解决方案2】:

您应该探索Athena。它是 AWS 软件包中的一个工具,可让您灵活地查询 csv(甚至 gzip)文件。

这将节省您手动复制 Redshift 表中数据的时间,并且您将能够从 csv 本身查询数据集。 Athena 能够从 s3 存储桶中查询它们。

但是,它仍处于开发阶段,您将不得不花一些时间来使用它,因为它对用户不太友好。查询中的语法错误会将您从 AWS 会话中注销,而不是引发语法错误。此外,由于 Athena 在很大程度上尚未开发,因此您不会在 Internet 上找到太多文档和开发人员讨论。

Athena 会根据您的查询获取的数据向您收费,因此更加方便携带。如果查询未能执行,亚马逊不会向您收费。

【讨论】:

  • 如果您想将 csv 中的数据与 Redshift 中的数据结合起来,请考虑使用 Redshift Spectrum - 这与 Athena 具有相似的功能,但文件在 Redshift 中显示为“表”。
  • 感谢您提供更多信息。一定会探索它。
猜你喜欢
  • 2017-10-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-07
  • 1970-01-01
  • 2010-11-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多