[在过去的几年中,我们已经开发了相当多的Spark Streaming(Direct API)应用程序,它们可以在Cloudera平台上与Kafka,IBM MQ,Hive,HBase,HDFS以及其他类型进行读写。现在不推荐使用Spark Streaming的Direct API(我们目前具有版本2.3.2),并且我们最近在我们的项目中添加了Confluent平台(Kafka 2.2.0附带),我们计划迁移这些应用程序。
我们的Spark Streaming应用程序的自然替代品是什么?我们应该迁移到Spark结构化流媒体,还是迁移到Kafka流?
我个人对这两个框架都没有任何经验,但是在我看来,Spark结构化流似乎是自然的选择。我们的代码库主要是用Scala编写的,也可以用于结构化API。 Kafka Streams在Scala中有一些limitations。尽管我们可以通过保留RDD的低级API并转移到更高级别的DataFrames来释放一些灵活性,但我们可以借助Spark来建立我们的知识。
[另一方面,有Kafka Streams,这可能是处理Kafka主题之间的数据的最佳选择,这是我们的主要用例。并查看Confluent随附的所有Kafka连接器,也可以使用其他用例。
您当前有一些Spark调度程序,因此可以使用结构化流,它与旧的Streaming API二进制兼容。