2016-10-13 54 views
4

我已经使用星火ML并能得到在预测合理的精度为我的业务问题运行火花作为Java Web应用程序

的数据是不是巨大的,我能够将输入(基本上是一个CSV文件)使用斯坦福NLP并运行朴素贝叶斯预测我的本地机器。

我想运行就像一个简单的java主程序或连同一个简单的MVC Web应用程序

目前这一预测服务运行我使用我的预测火花提交命令?相反,我可以从我的servlet /控制器类创建spark上下文和数据框架吗?

我找不到有关这种情况的任何文档。

关于上述

+1

“我找不到这种情况下的任何文档”。博兹火花并不意味着以这种方式使用。 – BDR

+0

您可以将预测输出存储在您的MVC应用程序数据库或火花表中,然后通过节俭服务器访问它 – mrsrinivas

回答

5

星火的可行性,请告知有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集群)。

学分:link1link2

编辑:(按在评论问题) 构建火花应用罐子必要的依赖,并以本地模式运行的工作。编写jar来读取CSV并使用MLib,然后将预测输出存储在某些数据源中,以便从Web应用程序访问它。

+0

感谢您的详细回复。我不打算拥有Hadoop群集或通过RESTful服务提交作业。我所寻找的(如果可行的话)是像使用其他任何简单的API一样使用Spark mlib API,以便它们在同一应用程序jvm中运行,而不是作为外部独立进程运行。 – lives

+0

在这种情况下,您可能会想到spark本地模式,它将在单个JVM中作为标准java jar运行。 – mrsrinivas

+0

谢谢Srinivas--我会试试看。 – lives

相关问题