大数据全系列 教程
1869个小节阅读:465.1k
目录
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
需求:需求:读取本地数据文件,统计文件中每个单词出现的次数。基于Flink计算引擎批处理(Batch)实现。
1.构建执行环境-env 2.读取本地文件返回数据源-dataSource 3.数据转换-transformation 4.数据接收器-sink 5.触发执行-execute
在src/main/scala下创建Scala类com.itbaizhan.flink.scala.base.WordCountBatch
编码:
xxxxxxxxxx
package com.itbaizhan.flink.scala.base
import org.apache.flink.api.scala.{DataSet, ExecutionEnvironment}
object WordCountBatch {
def main(args: Array[String]): Unit = {
//导入隐式转换
import org.apache.flink.api.scala._
//1.构建执行环境-env
val env: ExecutionEnvironment = ExecutionEnvironment.getExecutionEnvironment
//2.读取本地文件返回数据源-dataSource
val dataSource: DataSet[String] = env.readTextFile("datas/words")
//3.数据转换-transformation
/*//3.1拆分单词
val words: DataSet[String] = dataSource.flatMap(line => {
line.split("\\s+")
})
//3.2 转换为二元组
//val tupDS:DataSet[(String,Int)] = words.map(word => (word, 1))
val tupDS:DataSet[(String,Int)] = words.map((_, 1))
//3.3 按照key进行分组 0 表示下标,代表是二元组中的key
val groupDS: GroupedDataSet[(String, Int)] = tupDS.groupBy(0)
//3.4 求和 1 代表的是二元组的value,单词出现的次数
val result: AggregateDataSet[(String, Int)] = groupDS.sum(1)
//4.数据接收器-sink
result.print()*/
//5.触发执行-execute 批处理不需要触发
//将步骤3和4的代码进行简化
dataSource.flatMap(_.split("\\s+"))
.map((_,1))
.groupBy(0)
.sum(1)
.print()
}
}