Apache spark KStreams+;火花流+;机器学习

Apache spark KStreams+;火花流+;机器学习,apache-spark,machine-learning,apache-kafka,spark-streaming,apache-kafka-streams,Apache Spark,Machine Learning,Apache Kafka,Spark Streaming,Apache Kafka Streams,我正在做一个POC,用于在数据流上运行机器学习算法。 我最初的想法是获取数据,使用 火花流-->聚合多个表中的数据-->在数据流上运行MLLib-->生成输出 但我穿越了KStreams。现在我很困惑 问题: 1.Spark流媒体和Kafka流媒体有什么区别? 2.如何将KStreams+Spark流媒体+机器学习结合起来? 3.我的想法是对测试数据进行连续培训,而不是进行批量培训 ApacheKafka Streams是一个库,提供可嵌入的流处理引擎,在Java应用程序中很容易使用它进行流处理

我正在做一个POC,用于在数据流上运行机器学习算法。
我最初的想法是获取数据,使用

火花流-->聚合多个表中的数据-->在数据流上运行MLLib-->生成输出

但我穿越了KStreams。现在我很困惑

问题:
1.Spark流媒体和Kafka流媒体有什么区别?
2.如何将KStreams+Spark流媒体+机器学习结合起来?

3.我的想法是对测试数据进行连续培训,而不是进行批量培训

ApacheKafka Streams是一个库,提供可嵌入的流处理引擎,在Java应用程序中很容易使用它进行流处理,它不是一个框架

我从卡夫卡作者那里找到了一些关于卡夫卡的使用案例,而且也很好。

首先,术语“Confluent’s Kafka Streaming”在技术上是不正确的

  • 它被称为卡夫卡的流API(又名卡夫卡流)
  • 它是Apache Kafka的一部分,因此由Apache软件基金会(而不是Confluent)拥有
  • Confluent开源Confluent企业——来自Confluent的两个产品都利用了ApacheKafka(因此,Kafka流)
  • 然而,Confluent为ApacheKafka提供了很多代码,包括Kafka流

    关于差异(我仅强调一些主要差异,并参考互联网和文档了解更多详细信息:和)

    火花流:

    • 微批处理(逐记录流处理无真实记录)
    • 无亚秒延迟
    • 有限的窗口操作
    • 无事件时间处理
    • 处理框架(难以操作和部署)
    • ApacheSpark的一部分--数据处理框架
    • 一次加工
    卡夫卡河

    • 逐记录流处理
    • 毫秒延迟
    • 富窗口操作
    • 流/表对偶性
    • 事件时间、摄取时间和处理时间语义
    • Java库(易于运行和部署——与其他应用程序一样,它只是一个Java应用程序)
    • ApacheKafka的一部分——流处理平台(即,它同时提供存储和处理)
    • 至少一次加工(恰好一次加工为在制品;cf和)
    • 弹性,即动态可伸缩
    因此,没有理由两者都“结婚”——这是一个选择你想用哪一个的问题

    我个人的看法是,Spark不是流处理的好解决方案。如果您想使用Kafka Streams之类的库或Apache Flink、Apache Storm或Apache Apex之类的框架(这些都是流处理的好选择),这取决于您的用例(可能还有个人喜好),并且无法回答


    Kafka Streams的一个主要区别在于,它是一个库,不需要处理集群。因为它是Apache Kafka的一部分,而且如果您已经有了Apache Kafka,这可能会简化您的总体部署,因为您不需要运行额外的处理集群。

    我最近在一次会议上介绍了这个主题

    Apache Kafka Streams或Spark Streaming通常用于通过流处理(在数据运动时处理数据)将机器学习模型实时应用于新事件。马提亚的回答已经讨论了他们之间的差异

    另一方面,您首先使用apachesparkmllib(或H2O.ai或XYZ)等工具,首先使用历史数据集构建分析模型

    卡夫卡流也可以用于模型的在线培训。不过,我认为在线培训有各种各样的注意事项

    所有这些都将在我的幻灯片组“”中详细讨论

    从流处理的角度来看,火花流KStreams在一张图片中

    强调了Spark流媒体和KStreams的显著优势,以使答案简短

    Spark流媒体与KStream相比的优势:
  • 轻松地将Spark ML模型和图形计算集成到同一应用程序中,而无需在应用程序外写入数据,这意味着您将比再次编写kafka并进行处理快得多
  • 将文件系统和其他非卡夫卡源等非流源与同一应用程序中的其他流源连接起来
  • 使用最常用的SQL(StructuredStreaming)可以轻松处理具有模式的消息
  • 可以使用GraphX内置库对流数据进行图形分析
  • Spark应用程序可以部署在(如果)现有的纱线或Mesos集群上 KStreams的优势:
  • 用于ETL处理和ML模型服务/培训的紧凑库,具有丰富的功能。到目前为止,源和目标都应该是卡夫卡主题
  • 很容易实现精确的一次语义
  • 不需要单独的处理集群
  • 易于在docker上部署,因为它是一个运行简单的java应用程序

  • 嘿,你的答案是2016年的,如果能更新它就太好了,对于目前的情况,再次感谢你在StackOverflow上的所有答案。这个答案根本不包括Spark,但提到了Flink。。。不太切题。