Flink系列之:Java代码实现DataStream,并使用dashboard的Web UI页面查看任务状态
一、flink dashboard Web UI
二、java代码实现DataStream
import org.apache.flink.api.common.functions.FlatMapFunction;
import org.apache.flink.api.common.functions.MapFunction;
import org.apache.flink.api.java.tuple.Tuple2;
import org.apache.flink.configuration.Configuration;
import org.apache.flink.streaming.api.datastream.DataStreamSource;
import org.apache.flink.streaming.api.datastream.SingleOutputStreamOperator;
import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;
import org.apache.flink.util.Collector;
import java.util.Arrays;
public class WordCountStreamingByJava {
public static void main(String[] args) throws Exception {
//创建环境
StreamExecutionEnvironment env =
StreamExecutionEnvironment.createLocalEnvironmentWithWebUI(new Configuration());
//获取数据源
DataStreamSource<String> source = env.socketTextStream("localhost", 18888);
//转换操作
SingleOutputStreamOperator<String> flatMap = source.flatMap(new FlatMapFunction<String, String>() {
@Override
public void flatMap(String line, Collector<String> collector) throws Exception {
Arrays.stream(line.split(" ")).forEach(word -> collector.collect(word));
}
});
SingleOutputStreamOperator<Tuple2<String, Integer>> map = flatMap.map(new MapFunction<String, Tuple2<String, Integer>>() {
@Override
public Tuple2<String, Integer> map(String word) throws Exception {
return Tuple2.of(word, 1);
}
});
map.keyBy(0).sum(1).print();
//开启流式处理
env.execute("WordCountStreamingByJava" + System.currentTimeMillis());
}}
三、开启终端产生数据
nc -l 18888
hello world
hello city
hello red yellow green black
代码输出如下所示:
4> (hello,1)
7> (world,1)
12> (city,1)
4> (hello,2)
8> (yellow,1)
8> (green,1)
4> (hello,3)
11> (red,1)
11> (black,1)
四、Web UI页面详细查看任务状态
任务管理
查看运行的任务
查看详细任务