我正在练习使用spark网站提供的在线资源开发示例模型。我使用sparkshell成功地创建了模型并对示例数据运行它,但是如何在生产环境中实际运行模型呢?是通过spark作业服务器吗?
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)
当我在sparkshell中运行时,上面的代码工作得非常完美,但我不知道如何在生产环境中实际运行模型。我试着通过spark jobserver运行它,但是我出错了,
curl -d "input.string = 1, 2, 3, 4, 5, 6, 7, 8, 9" 'ptfhadoop01v:8090/jobs?appName=SQL&classPath=spark.jobserver.SparkPredict'
我确信这是因为它传递了一个字符串值,而程序期望它是向量元素,有人能指导我如何实现这一点吗。在生产环境中,数据是如何传递到模型的?或者是另一种方式。
1条答案
按热度按时间ux6nzvsh1#
spark作业服务器用于生产用例中,在生产用例中,您需要设计spark作业的管道,并且(可选地)通过restapi跨作业使用sparkcontext。sparkplug是spark作业服务器的替代品,提供了类似的结构。
但是,要回答您关于如何在生产环境中运行(单一的)spark作业的问题,答案是您不需要第三方库来执行此操作。您只需要构造一个sparkcontext对象,并使用它来触发spark作业。例如,对于您的代码片段,所需要的是;
或者,您还可以使用spark库本身提供的spark submit脚本 Package 器。