1、创建类StreamWordForTool
import org.apache.flink.api.java.tuple.Tuple2;
import org.apache.flink.streaming.api.datastream.DataStream;
import org.apache.flink.streaming.api.datastream.SingleOutputStreamOperator;
import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;
/**
* @Author ***
* @email ***@***.com.cn
* @Date 2021/5/21 11:09
* @Version 1.0
*/
public class StreamWordForTool {
public static void main(String[] args) throws Exception{
// 1、创建流处理执行环境
StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
// **设置并行度(线程)**
env.setParallelism(8);
// 2、从文件读取数据
// String inputPuth = "F:\\project\\learnflink\\src\\main\\resources\\test.txt";
// DataStreamSource<String> inputDataStream = env.readTextFile(inputPuth);
//从socket文本流读取数据
DataStream<String> inputDataStream = env.socketTextStream("localhost", 7777);
// 3、基于数据流进行转换计算
SingleOutputStreamOperator<Tuple2<String, Integer>> resultStream = inputDataStream.flatMap(new WordCount.MyFlatMapper())
.keyBy(0)
.sum(1);
// 4、输出
resultStream.print();
// 5、执行任务
env.execute();
}
}
2、打开电脑的linux子系统,cmd==>bash==>nc -lk 7777,执行任务,命令行内输入数据如下:
注:安装子系统可参考:子系统安装教程
3、测试提取参数,地址和端口改为配置型
// 2、从文件读取数据
// String inputPuth = "F:\\project\\learnflink\\src\\main\\resources\\test.txt";
// DataStreamSource<String> inputDataStream = env.readTextFile(inputPuth);
// 用parameter tool工具从程序启动参数中提取配置项
ParameterTool parameterTool = ParameterTool.fromArgs(args);
String host =parameterTool.get("hosts");
Integer port =parameterTool.getInt("ports");
DataStream<String> inputDataStream = env.socketTextStream(host, port);
//从socket文本流读取数据
// DataStream<String> inputDataStream = env.socketTextStream("localhost", 7777);
运行时需要使用Edit configurations配置传的参数,如图:
未完待续…