負載RandomForestModel我訓練和使用星火mllib一個相當沉重的隨機森林模型1.3.0在星火使用流
我想用一個Spark流工作用它實時分類保存(拼花格式),但面臨的困難很少,主要與模型的大小和將其發送給工人的必要性有關。
現在,我看到3個解決方案,其中沒有一個是理想的:
加載駕駛員側,將其發送給員工上的每個計算微批次。示例代碼:
val model = RandomForestModel.load(sc, path) stream.map(smthg => model.predict(...))
這裏的問題是它會在每批中序列化併發送模型。有關信息,我必須將spark.akka.frameSize設置爲大於50MB才能執行而不出錯。這顯然是不可持續的
加載每個工人的模型。在Spark 1.3中,似乎沒有辦法獲取當前的SparkContext,所以我必須爲每個工作人員創建一個新的,以便能夠加載模型。這意味着/所需的第一條微一批集羣上額外的CPU工作迭代
駕駛員側執行預測:
val model = RandomForestModel.load(sc, path) stream .map(smthg => stuff) .foreachRDD(rdd => model.predict(rdd))
由於不能夠很好地擴展的缺點,因爲一切都發生在司機側。