栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 云计算 > 云平台

Flink的流批WordCount入门案例

云平台 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Flink的流批WordCount入门案例

Flink的WordCount及其运行分析
    • 一、环境说明
    • 二、实现步骤

一、环境说明
工具版本
IDEA2021.3.2
Flink1.10.2
Scala2.12
JDK1.8_181
二、实现步骤
  1. 新建maven工程
  2. 添加flink相关依赖到pom.xml中
    
    
    
        4.0.0
        com.suben.bigdata
        flink-basic
        1.0-SNAPSHOT
    
        
            8
            8
        
    
        
            
                org.apache.flink
                flink-scala_2.12
                1.10.1
            
            
                org.apache.flink
                flink-streaming-scala_2.12
                1.10.1
            
            
                org.slf4j
                slf4j-simple
                1.7.25
                compile
            
        
    
        
             
                
                    net.alchim31.maven
                    scala-maven-plugin
                    3.4.6
                    
                         
                            
                                compile
                            
                        
                    
                
                
                    org.apache.maven.plugins
                    maven-assembly-plugin
                    3.0.0
                    
                        
                            jar-with-dependencies
                        
                    
                    
                        
                            make-assembly
                            package
                            
                                single
                            
                        
                    
                
            
        
    
    
  3. 添加scala框架支持
  4. 准备批处理测试数据,新建wc.txt,添加如下内容:
    I love Guizhou
    I love my home
    I love Flink
    I love Bigdata
    
  5. 编写批处理的wordcount,新建WordCountBatch的Object,代码如下:
    import org.apache.flink.api.scala.{AggregateDataSet, DataSet, ExecutionEnvironment, createTypeInformation}
    
    object WordCountBatch {
      def main(args: Array[String]): Unit = {
        // 1. 初始化环境
        val env = ExecutionEnvironment.getExecutionEnvironment
        val lineDS: DataSet[String] = env.readTextFile("E:\IdeaProjects\bigdata-sets002\flink-basic\data\wc.txt")
    
        // 2. 读取数据并进行转换
        val aggregateDS: AggregateDataSet[(String, Int)] = lineDS.flatMap(_.split(" "))
          .map(x => (x, 1))
          .groupBy(0)
          .sum(1)
    
        // 3. 打印结果
        aggregateDS.print()
    
      }
    }
    
  6. 运行结果如下:
  7. 安装nc,我用的是Windows版本的Netcat,下载后解压,启动即可,如下图所示:

    然后在控制台输入如下文字即可:
    I love Guizhou
    I love my home
    I love Flink
    I love Bigdata
    
  8. 编写流处理的wordcount,新建WordCountStream的Object类,然后添加如下代码即可:
    import org.apache.flink.streaming.api.scala._
    
    object WordCountStream {
      def main(args: Array[String]): Unit = {
        // 1. 初始化环境
        val env = StreamExecutionEnvironment.getExecutionEnvironment
    
        // 2. 读取数据并进行转换
        // 接收一个socket文本流
        val inputDataStream: DataStream[String] = env.socketTextStream("localhost",6666)
        // 进行转化处理统计
        val resultDataStream: DataStream[(String, Int)] = inputDataStream
          .flatMap(_.split(" "))
          .filter(_.nonEmpty)
          .map((_, 1))
          .keyBy(0)
          .sum(1)
    
        // 3. 为结果好看些,设置并发度为1
        resultDataStream.print().setParallelism(1)
    
        // 启动任务执行
        env.execute("stream word count")
    
      }
    }
    
  9. 运行代码(运行前确认下nc需要处于启动状态),正常的结果如下图所示:
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/896113.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号