我们使用 Spark-streaming-eventhubs 从 Spark Streaming 应用程序中的 IoTHub 读取数据。我想了解偏移和租赁管理是否完全由该库处理? 在 this博客文章说:
...by design each EventHubsReceiver instance only handles one Event Hubs partition. Each receiver instance requires one CPU core to run, and you need to leave some CPU cores to process the received data. So if you set partition count to N in Event Hubs parameters, you need to make sure you assign 2xN CPU cores to the streaming application.
这是否意味着库将自动为每个分区创建一个接收器并管理租约? 它会自动将检查点写入检查点位置吗?
它还表示我们需要分配给流应用程序的 2xN CPU 核心。那么如果 IoTHub 中有 4 个分区,则需要 8 个 CPU 核心,这真的正确吗?那么创建可以处理多个用例并输出到多个位置的应用程序而不是每个用例/位置一个流应用程序是否有意义?
在后一种情况下,例如如果有 3 个应用程序从同一个 IoTHub(4 个分区)读取数据,我们将需要 24 个内核,这是昂贵的......
谢谢!
最佳答案
是的,如果您指的是 this library - 我们支持租约管理和在库中完全从 Offset 重放(即库为每个分区创建一个接收器并管理每个分区的租约和检查点位置)。
我们对那篇文章中的 CPU 故事表示歉意 - 它不再适用 - 提供一些背景 - 我们进行了 2 个 EventHubs-to-SPARK 适配器工作 - 经过一段时间我们认识到这一点并整合了它们。您正在查看一篇文章,其中提到了已弃用的 EventHubs 工作 - 该文章已过时 - 我们将修复该问题。
关于azure - 使用 Azure 事件中心的 Spark Streaming,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46427933/