我已经使用星火ML并能得到在预测合理的精度为我的业务问题运行火花作为Java Web应用程序
的数据是不是巨大的,我能够将输入(基本上是一个CSV文件)使用斯坦福NLP并运行朴素贝叶斯预测我的本地机器。
我想运行就像一个简单的java主程序或连同一个简单的MVC Web应用程序
目前这一预测服务运行我使用我的预测火花提交命令?相反,我可以从我的servlet /控制器类创建spark上下文和数据框架吗?
我找不到有关这种情况的任何文档。
关于上述
我已经使用星火ML并能得到在预测合理的精度为我的业务问题运行火花作为Java Web应用程序
的数据是不是巨大的,我能够将输入(基本上是一个CSV文件)使用斯坦福NLP并运行朴素贝叶斯预测我的本地机器。
我想运行就像一个简单的java主程序或连同一个简单的MVC Web应用程序
目前这一预测服务运行我使用我的预测火花提交命令?相反,我可以从我的servlet /控制器类创建spark上下文和数据框架吗?
我找不到有关这种情况的任何文档。
关于上述
星火的可行性,请告知有REST API的调用火花主主机提交作业。
提出申请:
curl -X POST http://spark-cluster-ip:6066/v1/submissions/create --header "Content-Type:application/json;charset=UTF-8" --data '{
"action" : "CreateSubmissionRequest",
"appArgs" : [ "myAppArgument1" ],
"appResource" : "file:/myfilepath/spark-job-1.0.jar",
"clientSparkVersion" : "1.5.0",
"environmentVariables" : {
"SPARK_ENV_LOADED" : "1"
},
"mainClass" : "com.mycompany.MyJob",
"sparkProperties" : {
"spark.jars" : "file:/myfilepath/spark-job-1.0.jar",
"spark.driver.supervise" : "false",
"spark.app.name" : "MyJob",
"spark.eventLog.enabled": "true",
"spark.submit.deployMode" : "cluster",
"spark.master" : "spark://spark-cluster-ip:6066"
}
}'
提交响应:
{
"action" : "CreateSubmissionResponse",
"message" : "Driver successfully submitted as driver-20151008145126-0000",
"serverSparkVersion" : "1.5.0",
"submissionId" : "driver-20151008145126-0000",
"success" : true
}
得到一个提交的申请
curl http://spark-cluster-ip:6066/v1/submissions/status/driver-20151008145126-0000
的状态10
状态响应
{
"action" : "SubmissionStatusResponse",
"driverState" : "FINISHED",
"serverSparkVersion" : "1.5.0",
"submissionId" : "driver-20151008145126-0000",
"success" : true,
"workerHostPort" : "192.168.3.153:46894",
"workerId" : "worker-20151007093409-192.168.3.153-46894"
}
现在,在您提交应执行的所有操作,并save output to any datasource and access the data via thrift server
因为没有太多的数据传输(如果要传输之间的数据你能想到sqoop的火花应用你的MVC应用程序数据库和Hadoop集群)。
编辑:(按在评论问题) 构建火花应用罐子必要的依赖,并以本地模式运行的工作。编写jar来读取CSV并使用MLib,然后将预测输出存储在某些数据源中,以便从Web应用程序访问它。
感谢您的详细回复。我不打算拥有Hadoop群集或通过RESTful服务提交作业。我所寻找的(如果可行的话)是像使用其他任何简单的API一样使用Spark mlib API,以便它们在同一应用程序jvm中运行,而不是作为外部独立进程运行。 – lives
在这种情况下,您可能会想到spark本地模式,它将在单个JVM中作为标准java jar运行。 – mrsrinivas
谢谢Srinivas--我会试试看。 – lives
“我找不到这种情况下的任何文档”。博兹火花并不意味着以这种方式使用。 – BDR
您可以将预测输出存储在您的MVC应用程序数据库或火花表中,然后通过节俭服务器访问它 – mrsrinivas