【发布时间】:2018-09-09 23:03:31
【问题描述】:
我们有一个传统的批处理应用程序,我们从多个来源(Oracle、Salesforce、FTP 文件、Web 日志等)提取数据。我们将传入的数据存储在 S3 存储桶中,并在 EMR 上运行 Spark 来处理数据并在 S3 和 Redshift 上加载。
现在我们正在考虑通过引入 AWS Kinesis,然后使用来自 EMR 的 Spark Structured Streaming 来处理流数据并将其加载到 S3 和 Redshift,从而使这个应用程序接近实时。鉴于我们有不同种类的数据,例如来自 Oracle 的 100 多个表、100 多个销售人员对象、来自 FTP 位置的 20 多个文件、Web 日志等。在这里使用 AWS Kinesis 的最佳方式是什么。
1) 为每个源(Salesforce、Oracle、FTP)使用单独的流,然后为每个表/对象使用单独的分片(在流中) - 每个消费者从自己的分片中读取,该分片具有特定的表/文件 2)为每个表/对象使用单独的流 - 在这种情况下,我们最终将拥有 500 多个流。 3) 对所有内容都使用单个流 - 不确定在这种情况下消费者应用程序将如何读取数据。
【问题讨论】:
标签: spark-streaming amazon-emr amazon-kinesis