我有一个AWS Kinesis Firehose流,使用以下配置将数据放入s3:
S3 buffer size (MB)* 2
S3 buffer interval (sec)* 60
一切都正常工作。唯一的问题是Firehose为每个数据块创建一个s3文件。(在我的情况下,如屏幕截图所示,每分钟创建一个文件)。随着时间的推移,这将产生大量文件:每天1440个文件,每年525k个文件。
这很难管理(例如,如果我想将存储桶复制到另一个存储桶,我需要逐个复制每个文件,这将需要时间)。
两个问题:
- 有没有办法告诉Kinesis将旧文件分组/合并在一起。(例如,24小时之前的文件被分组成一天的数据块)。
- 当从大量s3文件中
COPY
而不仅仅是几个文件时,如何影响COPY redshift性能?我没有精确测量过,但根据我的经验,大量小文件的性能相当差。从我记得的情况来看,当使用大文件时,大约2M行的COPY约为~1分钟。具有许多小文件(〜11k个文件)的2M行,则需要多达30分钟。
我关注的两个主要问题是:
- 更好的redshift COPY性能(来自s3)
- 更轻松的整体s3文件管理(备份,任何类型的操作)