Ich habe die Entwicklung von Beispiel-Modell mit Online-Ressourcen in Spark-Website zur Verfügung gestellt. Ich habe es geschafft, das Modell zu erstellen und es für Beispieldaten mit Hilfe von Spark-Shell auszuführen. Aber wie wird das Modell tatsächlich in der Produktionsumgebung ausgeführt? Ist es über Spark Job Server?Running Mlib über Spark-Job-Server
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)
Der obige Code funktioniert perfekt, wenn ich es in Funken Shell laufen, aber ich habe keine Ahnung, wie wir eigentlich Modell in der Produktionsumgebung ausführen. Ich versuchte es über Funken Job Server zu laufen, aber ich Fehler erhalten,
curl -d "input.string = 1, 2, 3, 4, 5, 6, 7, 8, 9" 'ptfhadoop01v:8090/jobs?appName=SQL&classPath=spark.jobserver.SparkPredict'
Ich bin sicher sein, weil ein String-Wert am vorbei, während das Programm es Vektorelemente werden erwartet, Kann jemand mich leiten, wie dies zu erreichen. Und wie werden die Daten in der Produktionsumgebung an Model übergeben? Oder ist es anders?
Hallo Sujith, vielen Dank für die Erläuterung und Beispielcode. Ich glaube, dass meine Schlussfolgerung zur Verwendung des Spark-Job-Servers für die Bereitstellung der in der Produktionsumgebung eingebauten Model korrekt war. Aber ich habe noch Tonnen von Fragen, die ich glaube, wird klar werden, wie ich tiefer in dies eintauchen. Zum Beispiel sagen wir, dass ich dieses Stück Code als ein Spark Jar veröffentliche und ich möchte den Code über den Funke-Job-Server auf einem entfernten Rechner ausführen. Irgendein Hinweis darauf, wie ich die Eingabezeichenfolge als Vektor übergeben oder die Zeichenfolge in einen Vektor umwandeln kann, mit dem ich die Ausgabe vorhersagen und das Ergebnis zurückgeben kann. Kurz gesagt, wie kann ich neue Daten übergeben –
@AsheshNair Die REST-API von Spark-Jobserver ist für die Verwaltung von Spark-Jobs vorgesehen, und daher Eingaben an die Jobs nicht als Parameter an die REST-Aufrufe übergeben werden. Es wird nur eine POST-Entität erwartet, bei der es sich um eine TypeSafe Config-Formatdatei handelt. Es wird beim Start mit der Konfigurationsdatei des Jobservers zusammengeführt. – suj1th
@AsheshNair Das übliche Produktionsszenario besteht darin, dass jede Eingabe, die ein Spark-Job benötigt, entweder aus einem Datenbank-/HDFS-Speicher gelesen oder aus einer Konfigurationsdatei gelesen wird. – suj1th