Ben*_*ier 5 amazon-s3 amazon-web-services amazon-redshift amazon-kinesis amazon-kinesis-firehose
我有一个AWS Kinesis Firehose流,使用以下配置将数据放入s3中:
S3 buffer size (MB)* 2
S3 buffer interval (sec)* 60
Run Code Online (Sandbox Code Playgroud)
一切正常。唯一的问题是Firehose为每个数据块创建一个s3文件。(以我为例,每分钟一个文件,如屏幕截图所示)。随着时间的流逝,会有很多文件:每天1440个文件,每年525k文件。
这很难管理(例如,如果我想将存储桶复制到另一个存储桶,则需要一个接一个地复制每个文件,这将花费一些时间)。
两个问题:
COPY从大量s3文件(而不是几个)中进行复制时,COPY红移性能如何受到影响?我没有精确地测量这一点,但是根据我的经验,使用许多小文件的性能会很差。我记得在使用大文件时,大约200万行的COPY约为1分钟。200万行包含许多小文件(〜11k文件),最多需要30分钟。我的两个主要问题是:
最简单的解决方法是增加firehose缓冲区的大小和时间限制-最多可以增加15分钟,这会将每天的1440个文件减少到每天96个文件(当然,除非您达到文件大小限制) )。
除此之外,Kinesis中没有任何内容可以为您合并文件,但是您可以设置一个S3生命周期事件,该事件在每次创建新的Kinesis文件时触发,并向其中添加一些您自己的代码(可能在EC2上运行或无服务器运行)与Lambda)并自行进行串联。
无法评论redshift的加载性能,但是我怀疑这不是什么大问题,即使它已经成为-或将要成为其中一个,我怀疑AWS会对性能有所帮助,因为这是他们设置的使用模式。
| 归档时间: |
|
| 查看次数: |
4454 次 |
| 最近记录: |