我们有一项要求,即每当广告投放给最终用户时,我们都会在DynamoDB表中记录事件。在dynamoDB表中,每秒有超过250次写入此表。
我们希望将此数据汇总并移至Redshift进行分析。
对于我假设的表中的每个插入,将调用DynamoDB流。如何将DynamoDB流提供给某种批次,然后处理这些批次。是否有关于此类用例的最佳实践?
我正在阅读apache spark,看起来像Apache Spark我们可以做这种聚合。但是apache spark stream不会读取DynamoDB流。
感谢任何帮助或指示。
由于
答案 0 :(得分:1)
DynamoDB流有两个接口:低级API和Kinesis Adapter。 Apache Spark有Kinesis integration,因此您可以一起使用它们。如果您想知道您应该使用什么DynamoDB流接口,AWS建议使用Kinesis适配器。
以下是Kinesis adapter for DynamoDB的使用方法。
还有很多事情需要考虑:
不是使用Apache Spark,而是值得查看Apache Flink。它是一种流优先解决方案(Spark使用微批处理实现流式传输),具有更低的延迟,更高的吞吐量,更强大的流媒体运营商,并且支持循环处理。它还有一个Kinesis adapter
可能是您不需要DynamoDB流将数据导出到Redshift。您可以使用Redshift命令导出数据。
答案 1 :(得分:0)
Amazon EMR提供此连接器的实现,作为emr-hadoop-ddb.jar的一部分,其中包含DynamoDBItemWriteable类。使用此类,您可以实现自己的DynamoDBInputFormat,如下所示。
<script src="https://cdnjs.cloudflare.com/ajax/libs/babel-standalone/6.25.0/babel.min.js"></script>