Flink学习之旅:(二)构建Flink demo工程并提交到集群执行

1.创建Maven工程

        在idea中创建一个 名为 MyFlinkFirst 工程

2.配置pom.xml

  
    1.13.0
    1.8
    2.12
    1.7.30
  
  
  
  
    org.apache.flink
    flink-java
    ${flink.version}
  
  
  org.apache.flink
    flink-streaming-java_${scala.binary.version}
    ${flink.version}
  
    
      org.apache.flink
      flink-clients_${scala.binary.version}
      ${flink.version}
    
    
    
      org.slf4j
      slf4j-api
      ${slf4j.version}
    
    
      org.slf4j
      slf4j-log4j12
      ${slf4j.version}
    
    
      org.apache.logging.log4j
      log4j-to-slf4j
      2.14.0
    
  

3.配置日志管理

        在目录 src/main/resources 下添加文件:log4j.properties,内容配置如下:

log4j.rootLogger=error, stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n

4.编写代码

        编写 StreamWordCount 类,单词汇总

package com.qiyu;

import org.apache.flink.api.common.typeinfo.Types;
import org.apache.flink.api.java.tuple.Tuple2;
import org.apache.flink.streaming.api.datastream.DataStreamSource;
import org.apache.flink.streaming.api.datastream.KeyedStream;
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;

/**
 * @author MR.Liu
 * @version 1.0
 * @data 2023-10-18 14:45
 */
public class StreamWordCount {
    public static void main(String[] args) throws Exception {
        // 1. 创建流式执行环境
        StreamExecutionEnvironment env =
                StreamExecutionEnvironment.getExecutionEnvironment();
        // 2. 读取文本流
        DataStreamSource lineDSS = env.socketTextStream("192.168.220.130",
                7777);
        // 3. 转换数据格式
        SingleOutputStreamOperator> wordAndOne = lineDSS
                .flatMap((String line, Collector words) -> {
                    Arrays.stream(line.split(" ")).forEach(words::collect);
                })
                .returns(Types.STRING)
                .map(word -> Tuple2.of(word, 1L))
                .returns(Types.TUPLE(Types.STRING, Types.LONG));
        // 4. 分组
        KeyedStream, String> wordAndOneKS = wordAndOne
                .keyBy(t -> t.f0);
        // 5. 求和
        SingleOutputStreamOperator> result = wordAndOneKS
                .sum(1);
        // 6. 打印
        result.print();
        // 7. 执行
        env.execute();
    }
}

5.测试

在hadoop102 服务器中 执行:

nc -lk 7777

再运行 StreamWordCount java类

在命令行随意疯狂输出

Flink学习之旅:(二)构建Flink demo工程并提交到集群执行_第1张图片

idea 控制台 打印结果:

Flink学习之旅:(二)构建Flink demo工程并提交到集群执行_第2张图片

测试代码正常

6. 打包程序提交到集群中运行

        在pom.xml添加打包插件


    
      
        org.apache.maven.plugins
        maven-assembly-plugin
        3.0.0
        
          
            jar-with-dependencies
          
        
        
          
            make-assembly
            package
            
              single
            
          
        
      
    
  

直接使用 maven 中的 package命令,控制台显示 BUILD SUCCESS 就是打包成功!

Flink学习之旅:(二)构建Flink demo工程并提交到集群执行_第3张图片

选择 MyFlinkFirst-1.0-SNAPSHOT.jar 提交到 web ui 上

Flink学习之旅:(二)构建Flink demo工程并提交到集群执行_第4张图片

上传 jar 后,点击 jar 包名称 ,填写 主要配置程序入口主类的全类名,任务运行的并行度。完成后 点击 submit 

Flink学习之旅:(二)构建Flink demo工程并提交到集群执行_第5张图片

查看 任务运行列表 

Flink学习之旅:(二)构建Flink demo工程并提交到集群执行_第6张图片

点击任务

Flink学习之旅:(二)构建Flink demo工程并提交到集群执行_第7张图片

点击“Task Managers”,打开 Stdout,并且在 hadoop102 命令行 疯狂输出 

Flink学习之旅:(二)构建Flink demo工程并提交到集群执行_第8张图片

Flink学习之旅:(二)构建Flink demo工程并提交到集群执行_第9张图片

Stdout 就会显示 结果

Flink学习之旅:(二)构建Flink demo工程并提交到集群执行_第10张图片

你可能感兴趣的:(大数据学习之路,flink,大数据,实时大数据)