(四)flink的DataSet:传递参数

构造方法传参

package batch;

import org.apache.flink.api.common.functions.FilterFunction;
import org.apache.flink.api.java.DataSet;
import org.apache.flink.api.java.ExecutionEnvironment;

public class ParmasDemo {
    public static void main(String[] args) throws Exception {
        //获取运行环境
        ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment();

        //读取数据
        DataSet<Integer> data = env.fromElements(1, 2, 3, 4, 5);
        /**
         * 构造方法传递参数
         */
        DataSet<Integer> filter = data.filter(new MyFilter(3));
        filter.print();
    }
        public static class MyFilter implements FilterFunction<Integer> {
        private  int limit = 0;

        public MyFilter(int limit){
            this.limit = limit;
        }

        @Override
        public boolean filter(Integer value) throws Exception {
            return value>limit;
        }
    }
}

withParameters传参

package batch;

import org.apache.flink.api.common.functions.RichFilterFunction;
import org.apache.flink.api.java.DataSet;
import org.apache.flink.api.java.ExecutionEnvironment;
import org.apache.flink.configuration.Configuration;

public class ParmasDemo02 {
    public static void main(String[] args) throws Exception {
        //获取运行环境
        ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment();

        //读取数据
        DataSet<Integer> data = env.fromElements(1, 2, 3, 4, 5);

        Configuration conf = new Configuration();
        conf.setInteger("limit", 3);

        DataSet<Integer> filter = data.filter(new RichFilterFunction<Integer>() {
            private int limit;

            @Override
            public void open(Configuration parameters) throws Exception {
                limit = parameters.getInteger("limit", 0);
            }

            @Override
            public boolean filter(Integer value) throws Exception {
                return value > limit;
            }
        }).withParameters(conf);
        filter.print();

    }
}

全局传参

package batch;

import org.apache.flink.api.common.ExecutionConfig;
import org.apache.flink.api.common.functions.RichFilterFunction;
import org.apache.flink.api.java.DataSet;
import org.apache.flink.api.java.ExecutionEnvironment;
import org.apache.flink.configuration.Configuration;

public class ParmasDemo03 {
    public static void main(String[] args) throws Exception {
        //获取运行环境
        ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment();

        //读取数据
        DataSet<Integer> data = env.fromElements(1, 2, 3, 4, 5);

        Configuration conf = new Configuration();
        conf.setInteger("limit",3);

        env.getConfig().setGlobalJobParameters(conf);

        DataSet<Integer> filter = data.filter(new RichFilterFunction<Integer>() {
            private int limit ;

            @Override
            public void open(Configuration parameters) throws Exception {
                super.open(parameters);
                ExecutionConfig.GlobalJobParameters globalJobParameters = getRuntimeContext().getExecutionConfig().getGlobalJobParameters();
                Configuration globalConf = (Configuration) globalJobParameters;
                limit = globalConf.getInteger("limit",0);
            }

            @Override
            public boolean filter(Integer value) throws Exception {
                return value>limit;
            }
        });
        filter.print();

    }
}

发布了483 篇原创文章 · 获赞 62 · 访问量 14万+

猜你喜欢

转载自blog.csdn.net/wwwzydcom/article/details/103835581