/v3/spark/analytics/job/


操作

  • 支持操作:

    • POST: 创建工作
    • GET: 列出工作 - 限于异步执行的工作
    • DELETE: 删除工作 - 限于异步执行而且还未完成的工作
  • 支持参数:

    • context: (非必需)创建工作的环境,如不为空则context必须已经创建并存在,如为空则系统为自动起一个新的环境。
    • sync: (非必需)true为同步、false为异步. 预设值为false。
    • timeout: (非必需)最大等待执行时间,以秒为单位,只有sync=true时才生效。
  • 创建工作时POST需要提供工作的JSON配置,其主要配置内容为:

    • sparkjob.configuration: 必须提供、JSON格式而且需要HTML-escape.
    • sparkjob.cache.names: STRING格式. 如果提供,job的API会在执行前预先验证此工作所依赖的缓存是否存在。如果会读取缓存的话,建议加这个配置。
  • 工作执行后:

    • 如果成功: 返回内容里无 "status" 或 "status" 为空值, 这时从 "result"里拿返回结果。
    • 如果报错: 返回内容里 "status" = "ERROR", 这时检查 "result" 里的 "message" 和 "stack" 找错误信息。

创建同步的工作: 将Hadoop文件用HDFSConnector读出、结果用Reserve操作缓存到内存,給个名字叫cache1

BASH

curl -X POST -d 'sparkjobconfiguration="{"sparkjob.input.connectors":"HDFSInputConnector?id=hdfsin,output=d1(input_path=`hdfs://master:9000/user/foo/bar.csv`, input_format=`csv`)","sparkjob.reserve.operations":"Reserve?input=d1,output=cache1"}"' 'api.exceeddata.com/analytics/v1/job?context=mycontext&sync=true'
{
  "result": 0
}

创建异步的工作: 读出上个操作缓存的cache1,在c1上跑GroupBy操作,对cache1里多记录进行元数据检测

BASH

curl -X POST -d 'sparkjobconfiguration="{"sparkjob.analytic.access.operations":"Access?input=cache1,output=d1","sparkjob.analytic.operations":"GroupBy?input=d1,output=d2(keys=field1, selects=field1 as name, sum(field2) as total);Result?input=d2()"}"' 'api.exceeddata.com/analytics/v1/job?appName=ac&context=mycontext&sync=false' { "status": "STARTED", "result": { "jobId": "9423749b-f305-484c-1214-b34dae0f8bc3", "context": "mycontext" }

列出异步工作现在执行的状态

BASH

curl 'api.exceeddata.com/analytics/v1/job/9423749b-f305-484c-1214-b34dae0f8bc3' { "duration": "20.00 secs", "classPath": "com.exceeeddata.ac.job.SparkJobRunner", "startTime": "2016-04-15T10:15:25.120Z", "context": "mycontext", "result": [{ "NO_META": true, "FIELDS": [{ "name": "john", "total": 122 }, …. } "status": "FINISHED", "jobId": "9423749b-f305-484c-1214-b34dae0f8bc3" }

删除异步工作

BASH

curl –X DELETE 'api.exceeddata.com/analytics/v1/job/9423749b-f305-484c-1214-b34dae0f8bc3'