解决方案概述
一个应用程序向SNS主题发布事件,Kinesis Delivery Stream(Firehose)订阅该主题,并直接将事件传递到S3存储桶中(无需Lambda)。在存储桶上定义了一个Glue表,以便我们可以使用Athena查询该表。
问题
在Firehose交付流中,我们配置了动态分区(DP),并将主键作为事件记录的主键。一切正常。但是,当我们在不到10秒的时间内发布10K个事件时,我们收到了DynamicPartitioning.ActivePartitionsLimitExceeded
错误,并且很多事件没有使用正确的前缀保存到存储桶中。
我尝试关闭DP,但出现了“只有在启用动态分区时才能存在AppendDelimiterToRecordProcessor”错误。删除此处理器后,所有事件都存储在一个文件中,没有适当的分隔符,Athena只能识别第一个文件。
问题
我对Kinesis还不熟悉,但我认为Kinesis Delivery Stream + Athena应该非常好地协同工作。看起来如果没有DP,它就不会起作用?我想知道在去年底引入DP之前人们是如何使用它们的?
AWS文档确实解释了这一点,但我只是想知道Kinesis Firehose + Athena是否可以在没有DP的情况下工作?我们自己不需要DP。
更新
我的问题与以下问题类似,但当Firehose源为SNS主题时,我没有机会转换事件,而且我还不想编写用于转换数据的lambda。