Him*_*hni 1 amazon-emr amazon-kinesis spark-streaming
我们有一个传统的批处理应用程序,我们从多个来源(Oracle、Salesforce、FTP 文件、Web 日志等)获取数据。我们将传入数据存储在 S3 存储桶中,并在 EMR 上运行 Spark 来处理数据并在 S3 和 Redshift 上加载。
现在,我们正在考虑引入 AWS Kinesis,然后使用 EMR 中的 Spark Structured Streaming 来处理流数据并将其加载到 S3 和 Redshift,从而使该应用程序接近实时。鉴于我们有不同种类的数据,例如来自 Oracle 的 100 多个表、100 多个 salesforce 对象、来自 FTP 位置的 20 多个文件、Web 日志等。这里使用 AWS Kinesis 的最佳方法是什么。
1) 对每个源(Salesforce、Oracle、FTP)使用单独的流,然后对每个表/对象使用单独的分片(在流内) - 每个消费者从自己的分片中读取数据,该分片具有特定的表/文件 2) 使用每个表/对象都有单独的流 - 在这种情况下我们最终将拥有 500 多个流。3)对所有内容使用单个流 - 不确定消费者应用程序将如何在这种情况下读取数据。
Kinesis 并不关心您将什么数据放入流中,数据对于 Kinesis 来说只是一个 blob。由您来确定(编码)流的写入者和读取者。您可以将不同类型的数据混合到一个流中,然后消费者需要弄清楚每个 blob 是什么以及如何处理它。
我会根据数据类型和数据优先级将其分成多个流。这将使实施和调试变得更加容易。
我认为您误解了碎片是什么。它们是为了性能而不是数据分离。
| 归档时间: |
|
| 查看次数: |
2788 次 |
| 最近记录: |