最后执行结果
在文件中新建一个words.txt文件夹,并编辑
编写代码
1.创建执行环境
val env = ExecutionEnvironment.getExecutionEnvironment
创建一个批处理的执行环境 此处导入的包应为
import org.apache.flink.api.scala.ExecutionEnvironment
2.添加文件位置
val inputPath = "C:\\...\\input\\words.txt"
3.读取文件
val inputDataSet = env.readTextFile(inputPath)
将words.txt文件读取出来并放到inputDataSet中,并返回一个文本文件的数据集,其中每一行都是一个记录,并且每行都是一个字符串。
4.对数据进行转换处理统计
将数据一个个分出来,再分组,并进行累加
Flink有无界流(DataStream)与有界流(DataSet),这两者是flink中主要的数据源,DataStream常用于流处理,DataSet用于批处理。
- flatMap:多用于处理数据流或数据集,将接受的数据转换成为多个输出元素,也就是将数组等拆开,以便后续计算
- split:.split(",") 将数据中的元素以逗号拆分
- map :做转换处理,并在里面进行计算
- groupby:将数据分组
val resultDataSet = inputDataSet
.flatMap(_.split(" "))
.map((_,1))
.groupBy(0)
.sum(1)
完整代码
import org.apache.flink.api.scala.ExecutionEnvironment
import org.apache.flink.api.scala._
object WordCount {
def main(args: Array[String]): Unit = {
//创建执行环境
val env = ExecutionEnvironment.getExecutionEnvironment
//从文件中读取数据
val inputPath = "C:\\...\\input\\words.txt"
val inputDataSet = env.readTextFile(inputPath)
//对数据进行转换处理统计,先分词,再将word进行分组,最后进行聚合统计
val resultDataSet = inputDataSet
.flatMap(_.split(" "))
.map((_,1))
.groupBy(0)
.sum(1)
//打印输出
resultDataSet.print()
}
}
最后执行结果