私はsparkウェブサイトで提供されているオンラインリソースを使用してサンプルモデルを開発していました。私はモデルを作成し、Spark-Shellを使ってサンプルデータ用に実行しましたが、実稼動環境でモデルを実際に実行するにはどうすればいいですか?それはスパークジョブサーバー経由ですか?Spark Job Server経由でMlibを実行
import org.apache.spark.mllib.classification.SVMWithSGD
import org.apache.spark.mllib.regression.LabeledPoint
import org.apache.spark.mllib.linalg.Vectors
val data = sc.textFile("hdfs://mycluster/user/Cancer.csv")
val parsedData = data.map { line =>
val parts = line.split(',')
LabeledPoint(parts.last.toDouble, Vectors.dense(parts.take(9).map(_.toDouble)))
}
var svm = new SVMWithSGD().setIntercept(true)
val model = svm.run(parsedData)
var predictedValue = model.predict(Vectors.dense(5,1,1,1,2,1,3,1,1))
println(predictedValue)
上記のコードはspark-shellで実行すると完璧に動作しますが、実際に運用環境でモデルを実際にどのように実行するかはわかりません。私はプログラムがベクトル要素であることを期待に対し、そのためには、誰かがこれを達成するためにどのように私を導くことができる、文字列値を渡しています確信している
curl -d "input.string = 1, 2, 3, 4, 5, 6, 7, 8, 9" 'ptfhadoop01v:8090/jobs?appName=SQL&classPath=spark.jobserver.SparkPredict'
、私はスパークジョブサーバを経由して、それを実行しようとしたが、私はエラーを取得します。また、実稼働環境でモデルにデータを渡す方法は?それとも別の方法ですか?
こんにちはsujith、説明とサンプルコードをお寄せいただきありがとうございます。私は、本番環境に組み込まれたModelを展開するためにspark-jobサーバーを使用することについての私の推測は正しいと考えています。 しかし、私はまだこれに深く掘り下げていくにつれて明らかになるだろうと考えている疑問がたくさんあります。今のところ、私はこのコードをSpark Jarとしてデプロイしています。リモートマシンのspark Jobサーバー経由でコードを実行したいとします。私はどのように入力文字列をベクトルとして渡すか、文字列をベクトルに変換して出力を予測し、その結果を返すことができます。つまり、新しいデータをどうやって渡すことができるのですか? –
@AsheshNair spark-jobserverが提供するREST APIは、Sparkジョブを管理するためのものであり、ジョブへの入力はREST呼び出しのパラメータとして渡されません。型保証設定書式ファイルであるPOSTエンティティのみが必要です。起動時にジョブサーバの設定ファイルとマージされます。 – suj1th
@AsheshNair通常の生産シナリオでは、Sparkジョブが必要とする入力は、データベース/ HDFSストアから読み取るか、設定ファイルから読み込むことです。 – suj1th