如何在DynamoDB Stream中使用Apache Streaming

时间:2017-07-31 07:26:06

标签: apache-spark amazon-dynamodb spark-streaming amazon-dynamodb-streams

我们有一项要求,即每当广告投放给最终用户时,我们都会在DynamoDB表中记录事件。在dynamoDB表中,每秒有超过250次写入此表。

我们希望将此数据汇总并移至Redshift进行分析。

对于我假设的表中的每个插入,将调用DynamoDB流。如何将DynamoDB流提供给某种批次,然后处理这些批次。是否有关于此类用例的最佳实践?

我正在阅读apache spark,看起来像Apache Spark我们可以做这种聚合。但是apache spark stream不会读取DynamoDB流。

感谢任何帮助或指示。

由于

2 个答案:

答案 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>