用Flink做出来的第一个程序
使用Flink做一个简单的Wordcount批处理
flink初学者,第一个Wordcount其实琢磨了很久很久,但是今天终于成功了,写下来供大家参考:
打开IDEA,创建一个maven项目
命名
首先配置以下依赖:pom.xml
<dependencies>
<dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-scala_2.11</artifactId>
<version>1.9.1</version>
</dependency>
<dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-streaming-scala_2.11</artifactId>
<version>1.9.1</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-nop</artifactId>
<version>1.7.2</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.scala-tools</groupId>
<artifactId>maven-scala-plugin</artifactId>
<version>2.15.2</version>
<executions>
<execution>
<id>scala-compile</id>
<goals>
<goal>compile</goal>
</goals>
<configuration>
<includes>
<include>**/*.scala</include>
</includes>
</configuration>
</execution>
<execution>
<id>scala-testCompile</id>
<goals>
<goal>testCompile</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
在这里新建一个scala文件,并且把它Mark Directory as Sources Root
然后新建一个文本文档,在resources里面创建一个新的txt,写一些一会批处理用到的数据,就随便写吧
这里就写一些自己一会想测试的数据就可以。
在scala文件里创建一个scala的object,named:com.myz.wc.wordcount
批处理:
package com.myz.wc
import org.apache.flink.api.scala.{DataSet, ExecutionEnvironment}
object Worldcount {
def main(args: Array[String]): Unit = {
// 初始化Flink批计算环境、
val env: ExecutionEnvironment = ExecutionEnvironment.getExecutionEnvironment
// 导入隐式转换
import org.apache.flink.api.scala._
// 设置默认的分区
// env.setParallelism(1)
// 读取数据
val ds: DataSet[String] = env.readTextFile("G:\\idea\\IdeaProjects\\flinktest\\src\\main\\resources")
// 转换计算
val result: AggregateDataSet[(String, Int)] = ds.flatMap(_.split(" "))
.map((_, 1))
.groupBy(0)
.sum(1)
// 打印(这里的print不能设置分区)
result.print()
}
}
运行以下看结果:
完成!