Flink用Java测试WordCount

美图欣赏:

Flink用Java测试WordCount_第1张图片

 

Flink编程模型
        
    
    每个Flink程序都包含以下若干流程
        
        1、获取执行环境 
        
        2、加载、创建初始数据  source
        
        3、转换数据  transformation
        
        4、放置计算结果位置  sink
        
        5、触发程序运行

 

package flink;

/**
 * Author : Jackson
 * Version : 2020/1/30 & 1.0
 */
import org.apache.flink.api.common.functions.FlatMapFunction;
import org.apache.flink.api.java.DataSet;
import org.apache.flink.api.java.ExecutionEnvironment;
import org.apache.flink.api.java.tuple.Tuple2;
import org.apache.flink.util.Collector;


/**
 * Created by root on 2019/11/27.
 */
public class Flink {

    public static void main(String[] args) throws Exception {
        //获取运行环境
        ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment();
        //数据源
        DataSet text = env.fromElements("I have a good friend. She is a very nice person. The first time I saw her at school, she smiled at me and I like her a lot. When we do homework in a team, we become friends. As we share the same interest, we are close. Now we often hang out for fun and we cherish our friendship so much.");

        /**
         * transfromation
         */

        DataSet> wordCount = text.flatMap(new LineSplitter()).groupBy(0).sum(1);
        //打印
        wordCount.print();

//        env.execute();


    }

    public static  class LineSplitter implements FlatMapFunction>{

        @Override
        public void flatMap(String line, Collector> out) throws Exception {
            for (String word: line.split(" ")){
                out.collect(new Tuple2<>(word,1));
            }
        }
    }
}

 

    
    1、Environment
        
        执行环境 StreamExecutionEnvironment 是所有flink程序的基础
        
        创建执行环境有三种方式,分别为:
        StreamExecutionEnvironment.getExecutionEnvironment
        StreamExecutionEnvironment.createLocalEnvironment
        StreamExecutionEnvironment.createRemoteEnvironment
       
    2、加载、创建初始数据


        在StreamExecutionEnvironment中,提供了不同数据接入接口
        
    3、转换数据
        
        Flink中的Transformation都是通过不同的Operation来实现。
        每个Operation内部通过实现Function接口完成数据处理逻辑定义。
        
    4、输出接口
        
        writeAsText  print
        
        flink提供了大量 connect操作,方便与外部系统交互
        
    5、程序触发
        
        
        需要调用 ExecutionEnvironment 的 execute 方法来触发。
        
        DataSet Api中,已经包含了 execute

 

 

运行的结果:

 

Flink用Java测试WordCount_第2张图片

 

                                                                                                                                          ————保持饥饿,保持学习

                                                                                                                                                              Jackson_MVP

 

 

你可能感兴趣的:(Flink)