嗨,我正在计划一个部署,其中Spark可以完成处理来自卡夫卡的传入数据的繁重工作,以将StreamingKMeans应用于异常检测。Spark与多个KMeans与mapWithState
然而,来自卡夫卡主题的数据来自各种来源,定义了需要不同KMeans模型(状态)的不同数据结构。因此,传入离散RDD中的每个条目都应该通过其自己的KMeans模型,基于“密钥”字段(基本上我需要单个事件处理)。
这种类型的处理可以用Spark来实现吗?如果是的话,它最终会利用Spark的并行性吗?我是Spark和Scala的新手,觉得我错过了一些东西。
在此先感谢。
UPDATE:
我目前正在调查mapWithState
运营商,这似乎解决了这个问题。问题是:我可以直接将StreamingKmeans模型保存到状态中吗?否则,我将不得不保存质心并在状态更新函数中实例化一个新模型,这看起来很昂贵。
非常感谢,因为它们取决于数据来源,并且运行时由另一个应用程序层添加Kafka源,因此通用性在这个应用程序层中键是不可预知的。您的建议是使用第三方选项(任何?)还是转向Flink?由于Flink在我看来似乎更适合这种情况... – Peterdeka
噢,也许我误解了,第三方的东西你的意思是不使用Spark和朋友吧?!这是我的第一个选择...:D – Peterdeka
我偏向这里。我试过Flink,我不喜欢API设计。忽略这一点,AFAIK并没有提供任何可以解决这种特殊情况的方法。但我可能是错的。关于当地的库存 - 埃尔基总体来说体面,虽然文件不是很好。 – zero323