加速我的数据加载操作

问题描述 投票:0回答:2

请原谅我的无知,如果这个问题对于这里的专家观众来说听起来很愚蠢

目前根据我的用例我正在对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不等

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

*附加信息

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

python amazon-web-services amazon-redshift bigdata
2个回答
2
投票

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

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

希望这可以帮助。


1
投票

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

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.