Met*_*est 2 apache-kafka apache-spark apache-kafka-connect spark-structured-streaming
使用 Spark 流,我可以读取 Kafka 消息并将数据写入不同类型的表,例如 HBase、Hive 和 Kudu。但这也可以通过对这些表使用 Kafka 连接器来完成。我的问题是,在哪些情况下我应该更喜欢连接器而不是 Spark 流解决方案。
Kafka 连接器解决方案的容忍度如何?我们知道通过 Spark 流,我们可以使用在多个节点上运行的检查点和执行器进行容错执行,但是 Kafka 连接器如何实现容错(如果可能)?通过在多个节点上运行连接器?
\n\n\n在哪些情况下我应该更喜欢连接器而不是 Spark 流解决方案。
\n
“这取决于” :-)
\n\n\n\n\nKafka 连接器解决方案的容忍度如何?\xe2\x80\xa6 Kafka 连接器如何实现容错(如果可能)?
\n
如果您想了解有关 Kafka Connect 的更多信息,请参阅此处的文档和我的演讲。请在此处查看连接器列表,并在此处查看教程视频。
\n\n免责声明:我在 Confluence 工作,并且是 Kafka Connect 的忠实粉丝:-)
\n因此,一般来说,简单地从 Kafka 读取记录并将它们发送到其他服务时,功能应该没有太大区别。
Kafka Connect 在标准任务方面可能更容易,因为它提供了各种开箱即用的连接器,因此它很可能会减少编写任何代码的需要。因此,如果您只想将一堆记录从 Kafka 复制到 HDFS 或 Hive,那么使用 Kafka 连接可能会更容易、更快。
考虑到这一点,当您需要做一些不标准的事情时,Spark Streaming 会彻底接管,即如果您想对记录执行一些聚合或计算并将它们写入 Hive,那么您可能应该从一开始就使用 Spark Streaming。
总的来说,我发现使用 Kafka connect 做一些不合标准的事情,例如将一条消息拆分为多条消息(假设它是例如 JSON 数组)非常麻烦,并且通常需要比在 Spark 中做更多的工作。
至于 Kafka Connect 容错,正如文档中所描述的,这是通过运行多个具有相同的分布式工作人员来实现的group.id,如果其中一个失败,工作人员会重新分配任务和连接器。
| 归档时间: |
|
| 查看次数: |
788 次 |
| 最近记录: |