时,我有一个AWS Kinesis流水流将数据放入S3具有以下配置:串连S3文件使用AWS流水
S3 buffer size (MB)* 2
S3 buffer interval (sec)* 60
,一切工作正常。唯一的问题是Firehose为每个数据块创建一个s3文件。 (在我的情况下,每分钟一个文件,如截图中所示)。随着时间的推移,这是很多文件:每天1440个文件,每年525k个文件。
这是很难管理(例如,如果我想水桶复制到另外一个我需要一个到每一个文件一个副本,这将需要时间)。
两个问题:
- 有没有办法告诉室壁运动到组/串连旧文件一起。 (例如,超过24小时的文件会在一天内分组为一块)。
- 当从s3文件过多而不是几个COPY的红移性能受到影响?我还没有精确地衡量这一点,但根据我的经验,很多小文件的表现都非常糟糕。从我记得的情况来看,使用大文件时,大约2M行的COPY约为1分钟左右。 2M行有很多小文件(大约11k文件),需要长达30分钟。
我的两个主要问题是:
- 更好的红移COPY演奏(S3)
- 更容易整体S3文件管理(备份,任何形式的操纵)
是的。不幸的是,在我的情况下,我希望记录能够快速传递。我不能等待900秒,因为我需要半实时的新数据。所以我正在考虑一个解决方案,将所有数据加载到redshift中,然后在一个(或几个)s3文件中立即卸载所有数据。 –
适合用例的另一种思路: i)在您的S3存储桶上安装AWS Lambda。 ii)根据需要保留AWS kinesis firehose流设置。 iii)因此,如问题所述,将会有太多的文件。 iv)现在,无论何时将发布到存储桶,Lambda函数都会触发将多个文件合并为一个并将其放入不同的存储桶中。如果您不想将其放入不同的存储桶中,可以将其放入具有不同前缀的相同存储桶中,以便它不会再次触发lambda功能。这会更简单。 –