如何使用 REST API 从接收器(或一般的 RichFunction)w/o 获取作业名称?
How to get job name from a Sink (or RichFunction in general) w/o using REST API?
如题。虽然 getJobId
可从 RuntimeContext
获得,但作业名称不可用。
尝试从配置中获取它似乎也不起作用:
@Override
public void open(Configuration parameters) throws Exception {
String jobName = parameters.getString(PipelineOptions.NAME); // this is null
}
这就是我们 运行 独立示例管道的方式:
public static void main(String... args) {
try {
ParameterTool parameterTool = ParameterTool.fromArgs(args);
final StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
// some pipeline setup
env.execute("This-is-job-name");
} catch (Exception e) {
// logging
}
假设您将作业名称作为参数传递给作业,您希望将其设置为:
public static void main(String... args) {
ParameterTool parameterTool = ParameterTool.fromArgs(args);
final StreamExecutionEnvironment env =
StreamExecutionEnvironment.getExecutionEnvironment();
env.getConfig().setGlobalJobParameters(parameters);
然后这应该可以工作
@Override
public void open(Configuration parameters) throws Exception {
ParameterTool params = (ParameterTool)
getRuntimeContext().getExecutionConfig().getGlobalJobParameters();
String jobName = params.get(nameOfParameterWithJobName);
}
传递给 open
的配置始终为空——这是一种不再使用的过时机制。未更改方法签名以避免破坏 public API.
将此类信息传递给 RichFunction 的另一种好方法是将其传递给构造函数。
如题。虽然 getJobId
可从 RuntimeContext
获得,但作业名称不可用。
尝试从配置中获取它似乎也不起作用:
@Override
public void open(Configuration parameters) throws Exception {
String jobName = parameters.getString(PipelineOptions.NAME); // this is null
}
这就是我们 运行 独立示例管道的方式:
public static void main(String... args) {
try {
ParameterTool parameterTool = ParameterTool.fromArgs(args);
final StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
// some pipeline setup
env.execute("This-is-job-name");
} catch (Exception e) {
// logging
}
假设您将作业名称作为参数传递给作业,您希望将其设置为:
public static void main(String... args) {
ParameterTool parameterTool = ParameterTool.fromArgs(args);
final StreamExecutionEnvironment env =
StreamExecutionEnvironment.getExecutionEnvironment();
env.getConfig().setGlobalJobParameters(parameters);
然后这应该可以工作
@Override
public void open(Configuration parameters) throws Exception {
ParameterTool params = (ParameterTool)
getRuntimeContext().getExecutionConfig().getGlobalJobParameters();
String jobName = params.get(nameOfParameterWithJobName);
}
传递给 open
的配置始终为空——这是一种不再使用的过时机制。未更改方法签名以避免破坏 public API.
将此类信息传递给 RichFunction 的另一种好方法是将其传递给构造函数。