Apache spark 如何将多个ML管道(模型)应用于同一火花流
我有一个用例,在这个用例中,我必须在同一个火花流(取自卡夫卡)上应用多个已经训练过的模型(例如M1、M2、…Mn) 使用隔离林算法对模型进行训练,如下所示: 我在这里发现了与我的案例类似的东西,但不幸的是,我不知道Genesys公司(前AltoCloud)是否将此API(StreamPipeline,异构管道)开源 我用上面的模式代码处理了这个问题,但我不知道它有多最优Apache spark 如何将多个ML管道(模型)应用于同一火花流,apache-spark,apache-kafka,spark-streaming,apache-spark-ml,Apache Spark,Apache Kafka,Spark Streaming,Apache Spark Ml,我有一个用例,在这个用例中,我必须在同一个火花流(取自卡夫卡)上应用多个已经训练过的模型(例如M1、M2、…Mn) 使用隔离林算法对模型进行训练,如下所示: 我在这里发现了与我的案例类似的东西,但不幸的是,我不知道Genesys公司(前AltoCloud)是否将此API(StreamPipeline,异构管道)开源 我用上面的模式代码处理了这个问题,但我不知道它有多最优 //read the stream val kafkaStreamDF = spark .readStream
//read the stream
val kafkaStreamDF = spark
.readStream
.format("kafka")
.option("kafka.bootstrap.servers", broker)
.option("subscribe", "topic")
.load
val myModels = Array("m1", "m2","m3","m4")
//parallize the input models in order to have multiple threads handling the same stream, otherwise blocked??
myModels.par.foreach(lm => {
//load the model
val model = PipelineModel.load(lm)
kafkaStreamDF.writeStream.foreachBatch({ (batchDF: DataFrame, batchId: Long) =>
//apply model
val pdf = model.transform(batchDF).selectExpr("CAST(to_json(struct(*)) AS STRING) AS value").write
.format("json")
.save("anom/" + lm + System.currentTimeMillis())
}).start().awaitTermination()
})
问题:
1.因此,我想知道是否有任何Spark API用于处理此类用例