Apache Spark和Apache Apex有什么区别?

17

Apache Apex 是一款开源的企业级统一流处理和批处理平台。它被用于GE Predix平台的IOT。

问题

  1. 从数据科学的角度来看,它与Spark有何不同之处?
  2. Apache Apex是否提供类似于Spark MLlib的功能?如果我们需要在Apache Apex上构建可扩展的ML模型,如何实现并使用哪种编程语言?
  3. 数据科学家是否需要学习Java来构建可扩展的ML模型?它是否有像PySpark这样的Python API?
  4. Apache Apex是否可以与Spark集成,并且我们是否可以在Apex上使用Spark MLlib构建ML模型?

2
不知道为什么这个被踩了! - PradeepKumbhar
1
我也一样,看到这么多负面评价感到震惊。有人能解释一下吗?这是一个非常具体和相关的问题。 - GeorgeOfTheRF
这里有非常详细的比较:http://www.slideshare.net/ApacheApex/architectual-comparison-of-apache-apex-and-spark-streaming - ashwin111
1个回答

22
  1. Apache Apex是一种用于处理流数据的引擎,试图实现相同功能的还有Apache Storm和Apache Flink。与其他流处理引擎不同的是,Apache Apex内置支持容错性、可扩展性和操作性,这些对生产使用案例来说是关键考虑因素。

与Spark进行比较:Apache Spark实际上是批处理。如果考虑使用Spark底层的Spark Streaming,则它是微批处理。相比之下,Apache Apex是真正的流处理。从某种意义上说,传入记录不必等待下一个记录进行处理。记录到达后立即进行处理并发送到下一个级别的处理。

  1. 目前正在努力将Apache Apex与机器学习库(如Apache Samoa、H2O)集成。请参阅https://issues.apache.org/jira/browse/SAMOA-49

  2. 它目前支持Java、Scala。
    https://www.datatorrent.com/blog/blog-writing-apache-apex-application-in-scala/ 对于Python,您可以尝试使用Jython。但我自己没有尝试过,所以不太确定。

  3. 考虑到它们是两个不同的处理引擎,与Spark的集成可能不是一个好主意。但是,Apache Apex正在进行与机器学习库的集成。

如果您有任何其他问题、功能请求,可以在Apache Apex用户邮件列表上发布它们:https://mail-archives.apache.org/mod_mbox/incubator-apex-users/


谢谢!您能解释一下关于微批处理的说法吗?您是指在“微批处理”中,只有在下一条记录到达后才会处理传入的记录,而在Apex中,记录不必等待任何处理吗? - GeorgeOfTheRF
今天来看,Apex 上运行可扩展的 ML 并不是一个选项,对吧?Apex 是原生写成的 Scala 代码,像 Spark 一样吗? - GeorgeOfTheRF
2
回答您的问题,1)是的,Apex会在记录到达时处理它们,您不必等待。而Spark则需要等待一批记录到达后再处理它们。2)目前Apex没有机器学习实现。3)Apex是用Java原生编写的,并支持Scala。 - PradeepKumbhar
@ML_Pro 在 http://spark.apache.org/docs/latest/streaming-programming-guide.html 中提到了以下关于 Spark Streaming 的内容: 内部工作原理如下。Spark Streaming 接收实时输入数据流,并将数据分成批次,然后由 Spark 引擎处理这些批次以生成最终的结果流。 - Yogi Devendra
2
我认为你的意思是“从某种意义上讲,传入记录不必等待下一条记录进行处理。” - nir

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接