当前位置: 首页 > 工具软件 > JobServer > 使用案例 >

spark-jobserver使用笔记

封烨伟
2023-12-01

最近项目有用到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= 立即得到结果

三:优化
后续补充

  • 列表内容
 类似资料: