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