1. 任务程序环境变量
BatchCompute为用户任务程序提供以下的环境变量:
变量名 | 变量值 |
BATCH_COMPUTE_DAG_JOB_ID | 作业ID,视实际情况而定 |
BATCH_COMPUTE_DAG_TASK_ID | 任务名称,视实际情况而定 |
BATCH_COMPUTE_DAG_INSTANCE_ID | 实例ID,视实际情况而定 |
BATCH_COMPUTE_OSS_HOST | OSS host,视实际情况而定 |
BATCH_COMPUTE_REGION | 区域,视实际情况而定 |
BATCH_COMPUTE_CLUSTER_ID | cluser id |
BATCH_COMPUTE_WORKER_ID | worker id |
程序运行在 Docker 容器中的环境变量稍有不同:
变量名 | 变量值 |
USER | root |
PWD | /batchcompute/workdir |
PATH | /sbin:/usr/sbin:/bin:/usr/bin, |
HOME | /root |
BATCH_COMPUTE_DAG_JOB_ID | 作业ID,视实际情况而定 |
BATCH_COMPUTE_DAG_TASK_ID | 任务名称,视实际情况而定 |
BATCH_COMPUTE_DAG_INSTANCE_ID | 实例ID,视实际情况而定 |
BATCH_COMPUTE_OSS_HOST | OSS host,视实际情况而定 |
BATCH_COMPUTE_REGION | 区域,视实际情况而定 |
2. 如何使用环境变量
您只需在任务运行程序中从环境变量中获取即可,示例:
2.1. Python 程序中使用环境变量
task_id = os.environ['BATCH_COMPUTE_DAG_TASK_ID']
instance_id = os.environ['BATCH_COMPUTE_DAG_INSTANCE_ID']
2.2. Java 程序中使用环境变量
String taskId = System.getenv("BATCH_COMPUTE_DAG_TASK_ID");
String instanceId = System.getenv("BATCH_COMPUTE_DAG_INSTANCE_ID");
3. 自定义环境变量
除了系统提供的环境变量,你也可以在提交作业的时候设置新的环境变量。
3.1. 使用 Python SDK
代码片段:
env = {
'k1': 'v1',
'k2': 'v2'
}
...
job_desc['DAG']['Tasks']['my-task']['Parameters']['Command']['EnvVars']=env
...
3.2. 使用 Java SDK
代码片段:
Command cmd= new Command();
cmd.addEnvVars("k1","v1");
cmd.addEnvVars("k2","v2");
...
TaskDescription desc = TaskDescription();
Parameters parmas = new Parameters();
params.setCommand(cmd);
...
desc.setParameters(params);
3.3. 使用命令行工具
bcs sub "python main.py" -e k1:v1,k2:v2