submitJob
语法
submitJob(jobId, jobDesc, jobDef, args…)
参数
jobId 是作业的ID,是字符串类型。
jobDesc 是字符串,用于描述作业。
jobDef 是用于定义作业的本地函数。请注意,该参数是一个函数对象,而不是表示函数名的字符串,因此不可使用引号。
args… 是函数的参数。如果函数没有参数,可以不指定。
详情
把批处理作业提交到本地节点并且返回作业的ID。如果要把批处理作业提交到远程节点,需要结合使用rpc或 remoteRun 函数。详情请参考 批处理作业管理。
例子
把作业提交到本地节点:
$ def jobDemo(n){
$ s = 0
$ for (x in 1 : n) {
$ s += sum(sin rand(1.0, 100000000)-0.5)
$ print("iteration " + x + " " + s)
$ }
$ return s
$ };
$ submitJob("jobDemo1","job demo", jobDemo, 100);
jobDemo1
$ getJobStatus("jobDemo1");
node |
userID |
jobId |
jobDesc |
priority |
parallelism |
receivedTime |
startTime |
endTime errorMsg |
---|---|---|---|---|---|---|---|---|
local8848 |
guest |
jobDemo1 job demo |
0 |
1 |
2020.09.13T13:40:10.138 |
2020.09.13T13:40:10.139 |
在作业的状态中,endTime为空,这意味着作业还在执行中。作业完成后,就能在状态中看到endTime的值。
$ getJobStatus("jobDemo1");
node |
userID |
jobId |
jobDesc |
priority |
parallelism |
receivedTime |
startTime |
endTime |
errorMsg |
---|---|---|---|---|---|---|---|---|---|
local8848 |
guest |
jobDemo1 |
job demo |
0 |
1 |
2020.09.13T13:40:10.138 |
2020.09.13T13:40:10.139 |
2020.09.13T13:41:43.644 |
$ getJobMessage("jobDemo1");
2020-09-13 13:40:10.139269 Start the job [jobDemo1]: job demo
2020-09-13 13:40:11.159543 iteration 1 3914.672836
2020-09-13 13:40:12.118014 iteration 2 4263.240185
2020-09-13 13:40:13.069435 iteration 3 4006.833021
......
2020-09-13 13:41:41.769256 iteration 97 -1897.963368
2020-09-13 13:41:42.706748 iteration 98 -2455.003061
2020-09-13 13:41:43.640253 iteration 99 924.915703
2020-09-13 13:41:43.640253 The job is done.
$ getJobReturn("jobDemo1");
924.915703
$ submitJob("jobDemo2",, jobDemo, 10);
jobDemo2
$ getRecentJobs();
node |
userID |
jobId |
jobDesc |
priority |
parallelism |
receivedTime |
startTime |
endTime |
ErrorMsg |
---|---|---|---|---|---|---|---|---|---|
local8848 |
guest |
jobDemo1 |
job demo |
0 |
1 |
2020.09.13T13:40:10.138 |
2020.09.13T13:40:10.139 |
2020.09.13T13:41:43.644 |
|
local8848 |
guest |
jobDemo2 |
jobDemo |
0 |
1 |
2020.09.13T13:58:20.552 |
2020.09.13T13:58:20.554 |
2020.09.13T13:58:29.584 |
把作业提交到远程节点:
使用rpc函数(”DFS_NODE2”与本地节点在同一集群):
$ def jobDemo(n){
$ s = 0
$ for (x in 1 : n) {
$ s += sum(sin rand(1.0, 100000000)-0.5)
$ print("iteration " + x + " " + s)
$ }
$ return s
$ }
$ rpc("DFS_NODE2", submitJob, "jobDemo3", "job demo", jobDemo, 10);
Output: jobDemo3
$ rpc("DFS_NODE2", getJobReturn, "jobDemo3");
Output: -3426.577521
使用 remoteRun 函数或 remoteRunWithCompression 函数,这里以 remoteRun 为例:
$ conn = xdb("DFS_NODE2")
$ conn.remoteRun(submitJob, "jobDemo4", "job demo", jobDemo, 10);
Output: jobDemo4
$ conn.remoteRun(getJobReturn, "jobDemo4");
Output: 4238.832005