我有配置文件myConfig.conf
,其中预测模型的路径被定义为参数pathToModel
。我正在阅读此文件一次以获得pathToModel
。
但是,现在我想略微更新逻辑 - 我希望能够在配置文件中更新pathToModel
时重新加载预测模型。
这是我目前的代码:
val pathToModelPar = ConfigFactory.load("myConfig.conf")
val pathToModel = pathToModelPar.getString("pathToModel")
val model = GradientBoostedTreesModel.load(sc,pathToModel)
myDStream.foreachRDD(myRDD => {
myRDD.foreachPartition({ partitionOfRecords =>
//...
val predictions = model.predict(...)
//...
})
})
我认为可以每小时检查一次文件config.conf
,然后可以应用IF-THEN规则 - 如果新pathToModel
与当前pathToModel
不同,那么<{1}}已重新加载。
但是,我不知道如何在流数据的上下文中实现这种重新加载。据我所知,如果我在model
之外将IF-THEN规则置于之外,则只会在流式传输过程开始时进行检查。如果我将IF-THEN规则置于 myDStream.foreachRDD(myRDD => {...})
内,那么由于在myDStream.foreachRDD(myRDD => {...})
中使用sc
,我将收到任务序列化错误。这就是问题所在。有什么想法吗?
我试过这种方法,但它只加载模型一次:
load