加速我的数据加载操作

时间:2017-08-02 12:55:03

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

请原谅我的无知,如果这个问题听起来像这里的专家观众那么愚蠢

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

将数据更新回redshift db

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

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

25分钟获得大约200 csv并在s3桶中更新它们

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

csv的大小从几MB变为1GB

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

*其他信息

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

2 个答案:

答案 0 :(得分:2)

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

  1. 使用CSV到S3的多部分上传,因此多部分上传不会等待单个文件上传,而是将文件并行上传到S3,从而节省大量时间。阅读herehereHere是它的Boto3参考。
  2. 并行地从S3将数据复制到Redshift中。如果将文件拆分为多个部分,然后运行COPY命令,则将从多个文件并行加载数据,而不是等待加载1 GB文件,这可能非常慢。阅读更多相关信息here
  3. 希望这有帮助。

答案 1 :(得分:1)

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

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

然而,仍然处于开发阶段,你将不得不花一些时间来使用它,因为它不是非常用户友好。查询中的语法错误会导致您退出AWS会话,而不是抛出语法错误。此外,你不会在互联网上找到太多的文档和开发人员谈话,因为雅典娜仍然在很大程度上尚未开发。

Athena根据您的查询提取的数据向您收费,因此更加便于携带。如果查询无法执行,亚马逊不会向您收费。