遇到了nc测试flink报错,然后nc也无法输入字母, 找了好多文章才发现缺少了配置项。所以记录一下解决过程。
idea中配置项
//--host localhost --port 9876
代码
import java.util.Arrays;
public class SocketTextStreamWordCount {
public static void main(String[] args) throws Exception {
StreamExecutionEnvironment streamEnv = StreamExecutionEnvironment.getExecutionEnvironment();
streamEnv.setParallelism(2);
//从文本中流读取数据
DataStream<String> inputDataStream = streamEnv.socketTextStream("localhost", 9876);
// 定义流操作
DataStream<Tuple2<String, Integer>> resultStream = inputDataStream.flatMap(new WordCount.MyFlatMapper())
.keyBy(0)
.sum(1);
// 打印结果
resultStream.print();
// 执行任务(流终止操作)
streamEnv.execute();
}
public static class MyFlatMapper implements FlatMapFunction<String, Tuple2<String, Integer>> {
public void flatMap(String value, Collector<Tuple2<String, Integer>> collector) throws Exception {
// 按照空格分词
String[] words = value.split(" ");
// 遍历所有word,包装成word 输出
Arrays.stream(words).forEach(x->{
collector.collect(new Tuple2<>(x, 1));
});
}
}
}
运行流程
-
先启动nc 这个时候是无法在nc中输入的
-
启动程序后,在nc中输入
-
idea中打印处理结果