Flink入門(6)----flink參數傳遞方式

flink參數傳遞方式可以使用constructor或withParameters(Configuration)方法將參數傳遞給函

數。參數被序列化爲函數對象的一部分,並傳送到所有並行任務實例。
 
以下爲代碼實例:
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 ParameterDemo {
    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();

        /**
         * Configuration傳遞參數
         */
//        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();

        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();


    }

//    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;
//        }
//    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章