最近项目有用到spark-jobserver来提供对外服务,主要用到的是他的面向job和context管理的REST接口
一:部署安装
这里就不再赘述来,网上很多个例子,可以参考
http://www.cnblogs.com/xiongmaotailang/p/5649256.html
这篇博客的内容,觉得写的还是可以的。
需要注意的一点是spark的版本问题,还有使用maven依赖的时候job-server-api_2.10 的版本问题,(主要是使用新老接口的问题即使用SparkJob或者NewSparkJob,在curl 提交作业的时候会宝少包的问题.我使用的是0.5.1 接口使用的SparkJob)
二:使用
1)首先需要初始化spark context
这里写代码片
curl -d "" 'ip:port/contexts/contextName?context-factory=spark.jobserver.context.SQLContextFactory'
- ip:ip地址
- port:jobserver端口
- contextName:自定义的context名字,后续执行会用到,也可以查询
使用该context的application - context-factory:初始化context
spark.jobserver.context.SQLContextFactory用来初始化SQLContext
spark.jobserver.context.HiveContextFactory用来初始化HiveContext
spark.jobserver.context.DefaultSparkContextFactory用来初始化SparkContext
spark.jobserver.context.StreamingContextFactory用来初始化StreamingContext
2)上传jar包
curl --data-binary @/XXXX.jar ip:port/jars/appName
- /xxxx.jar:jar包绝对路径
- ip:port ip+端口
- appName:自定义job名称
3)运行程序
curl -d "input.string= \"{\"aa\":13}\" " "ip:port/jobs?appName=XXX&classPath=XXX"
➜ sparkjobserver curl -d "input.string= \"{\"aa\":13}\" " "localhost:8090/jobs?appName=mp_report&classPath=com.jfbank.data.BeginProject"
{
"status": "STARTED",
"result": {
"jobId": "c9eb7f44-9c8e-45aa-a50f-18209adb743b",
"context": "32137c4e-com.jfbank.data.BeginProject"
}
}%
- 我这里输入的是json串,注意写法。否则会报错
- appName是上边定义好的名字
- classPath是你的入口类地址
4)查看结果
curl localhost:8090/jobs/jobId
- jobid是上边的步骤得到
也可以
curl -d "input.string = a b c a b see" "localhost:8090/jobs?appName=test&classPath=spark.jobserver.WordCountExample&context=test-context&sync=true"
- 添加context= 和sync= 立即得到结果
三:优化
后续补充
- 列表内容