【背景说明】
IDEA中执行一个程序时,如何就在程序一开始执行给传入你给的参数呢?
【说明】
public static void main(String[] args) throws Exception {}
说明:其实java中main方法里的args这个参数,就是用于接收外部传参的。
【解析传参的代码】
public class OutParamSocketStreamWordCount {public static void main(String[] args) throws Exception {StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();env.setParallelism(1);//方式一:通过位置,解析args参数
// String host = args[0];
// int port = Integer.parseInt(args[1]);//方式二:通过flink中自带的ParameterTool工具类,进行参数名解析ParameterTool parameterTool = ParameterTool.fromArgs(args);String host = parameterTool.get("host");int port = parameterTool.getInt("port");DataStreamSource<String> socketDS = env.socketTextStream(host, port);SingleOutputStreamOperator<WordCount> sum = socketDS.flatMap(new FlatMapFunction<String, WordCount>() {@Overridepublic void flatMap(String value, Collector<WordCount> out) throws Exception {String[] words = value.split(" ");for (String word : words) {out.collect(new WordCount(word, 1));}}}).keyBy(new KeySelector<WordCount, String>() {@Overridepublic String getKey(WordCount value) throws Exception {return value.getWord();}}).sum("count");sum.print();env.execute();}
}
通过上述两种方式实现外部传参(1.解析位置,2.解析参数名)
此时参数名在代码中已经写完了,但现在直接运行会报错,因为你还没有给其传参。
这样参数就传递完成了,再次运行!
成功