如何在DataStream程序中配置用户功能?

时间:2016-11-07 14:46:18

标签: apache-flink

我创建了一个包含配置的流式传输环境,并尝试使用open()的{​​{1}}方法访问此配置。

示例:

RichMapFunction

但是,在调试 Configuration conf = new Configuration(); conf.setBoolean("a", true); StreamExecutionEnvironment env = StreamExecutionEnvironment.createLocalEnvironment(8, conf); DataStreamSource<Integer> source = env.fromElements(5,5,5,5,5); source.map(new RichMapFunction<Integer, Integer>() { @Override public void open(Configuration parameters) throws Exception { boolean a = parameters.getBoolean("a", false); super.open(parameters); } @Override public Integer map(Integer value) throws Exception { return value; } }).print(); env.execute(); 方法时,我发现配置为空。

我做错了什么?如何将配置正确传递到流式传输环境中的open()

1 个答案:

答案 0 :(得分:1)

Flink的DataStream和DataSet API在您的示例中共享相同的用户功能接口,如RichMapFucntion

Flink Configuration的{​​{1}}方法的open参数是DataSet API的第一个版本的遗留物,未在DataStream API中使用。 Flink序列化您在RichFunction调用中提供的对象并将其发送给并行工作者。因此,您可以直接在对象中将参数设置为常规字段。