【问题标题】:Use Akka with apache spark streaming & Kafka?将 Akka 与 apache spark 流和 Kafka 一起使用?
【发布时间】:2017-07-13 18:33:33
【问题描述】:

下面是我试图处理的高级用例。

我们将学生数据流发布到 Kafka 主题中,我们的模块必须将学生 ID 作为流读取,并从多个来源为每个学生获取相关数据,并为每个学生执行一些计算,并为每个学生发布相关计算进入一个kafka主题。

所以这里的问题是最好编写一个大型 Spark 作业或使用 Akka 为每个源提供单独的服务,以便参与者可以并行工作,获取一堆学生 ID 并从各自的源获取数据并执行一些转换和动作,最后是与每个学生相关的计算。

或者我真的需要在这里使用 Akka 吗? Spark 会在内部有效地处理这个问题吗?

在这里欣赏任何想法。

【问题讨论】:

  • “是不是更好” 使它脱离了 StackOverflow 的主题。请改写您的问题。

标签: apache-spark akka akka-stream


【解决方案1】:

如果您的转换将来自 Kafka 的数据作为输入并将输出返回到 Kafka,那么最自然的选择是 Kafka Streams。我会先看看那个。 Kafka Streams 利用 Kafka 上的数据分区来并行处理分区组,但在每个组内按顺序处理消息,类似于 akka actor 彼此并行工作但每个 actor 在内部按顺序处理消息的方式。

但是,如果您的计算需要,例如机器学习或一般的一些迭代数据处理,它在迭代之间对数据进行重新分区(用火花术语洗牌),那么我认为 Kafka Streams 将不再适合。然后我会考虑 Spark 或 Flink。

Akka 非常强大,您可以在这两种情况下使用它,甚至更多。但是,它是一个比 Kafka Streams、Spark 或 Flink 更低级别的库。这意味着你有更多的权力,但也有更多的考虑因素。如果使用 akka,我会选择 akka-streams。他们通过 akka-stream-kafka(又名 reactive-kafka)库与 kafka 进行了良好的集成。

【讨论】:

    猜你喜欢
    • 2019-09-18
    • 2014-08-29
    • 2015-07-29
    • 2015-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-29
    • 1970-01-01
    相关资源
    最近更新 更多