一、简介
本文利用Maven来构造flink示例flink-quickstart-java和flink-quickstart-scala
maven的安装和配置,请参见“好玩的大数据:maven安装(maven-3.6.3)”
二、获取源程序
方法1:利用github获取flink源码
下载地址:https://github.com/
下载得到:flink-master.zip
搜索flink
点apache/flink
点击code=>Download ZIP
解压缩:flink-master.zip
找到flink-quickstart子目录
方法2:到flink官网获取flink源码
下载地址:https://flink.apache.org/
首页=>download=>Apache Flink 1.11.1=>Apache Flink 1.11.1 Source Release=>https://mirrors.tuna.tsinghua.edu.cn/apache/flink/flink-1.11.1/flink-1.11.1-src.tgz
下载得到:flink-1.11.1-src.tgz
对比从flink官网和github下载的源码基本一样
解压缩:flink-master.zip
找到flink-quickstart子目录
flink-quickstart-java子目录结构
flink-quickstart-scala子目录结构
方法3.利用mvn生成程序框架
java版本
mvn archetype:generate \
-DarchetypeGroupId=org.apache.flink \
-DarchetypeArtifactId=flink-quickstart-java \
-DarchetypeVersion=1.11.1
中间会问以下问题:可以随便填
groupId:Group1
artifactId:Flink-QuickStart-Java
version:默认,直接回车
package:默认,直接回车
Y::默认,直接回车
也可以用非交互模式,自动执行,不需要回答
mvn archetype:generate\
-DgroupId=Group1\
-DartifactId=Flink-QuickStart-Java\
-DarchetypeGroupId=org.apache.flink\
-DarchetypeArtifactId=flink-quickstart-java\
-DinteractiveMode=false\
-DarchetypeVersion=1.11.1
执行完毕后会生成
Flink-QuickStart-Java下的目录结构
scala版本
mvn archetype:generate \
-DarchetypeGroupId=org.apache.flink \
-DarchetypeArtifactId=flink-quickstart-scala \
-DarchetypeVersion=1.11.1
中间会问以下问题:可以随便填
groupId:Group1
artifactId:Flink-QuickStart-Scala
version:默认,直接回车
package:默认,直接回车
Y::默认,直接回车
执行完毕后会生成
也可以用非交互模式
mvn archetype:generate\
-DgroupId=Group1\
-DartifactId=Flink-QuickStart-Scala\
-DarchetypeGroupId=org.apache.flink\
-DarchetypeArtifactId=flink-quickstart-scala\
-DinteractiveMode=false\
-DarchetypeVersion=1.11.1
Flink-QuickStart-Scala下的目录结构
三、在pom.xml中增加依赖(可选)
有些已经有了就不必加了,这里只作为例子
#flink-java
#flink-streaming-java_2.11
#flink-scala_2.11
#flink-streaming-scala_2.11
#flink-streaming-scala_2.11
#flink-connector-kafka-0.10_2.11
四、编译、打包
#java版本
cd Flink-QuickStart-Java
mvn clean package
编译打包生成的target目录
#scala版本
cd Flink-QuickStart-Scala
mvn clean package
编译打包生成的target目录
五、提交作业
#java版本
flink run -m master:8081 -c Group1.BatchJob Flink-QuickStart-Java-1.0-SNAPSHOT.jar
出错了
#scala版本
flink run -m master:8081 -c Group1.BatchJob Flink-QuickStart-Scala-1.0-SNAPSHOT.jar
出错了
六、排错、再次提交作业
从flink.apache.org下载flink-1.11.1-src.tgz,(下载地址:https://www.apache.org/dyn/closer.lua/flink/flink-1.11.1/flink-1.11.1-src.tgz)
也可以从https://github.com/中搜flink,然后点击apache/flink下载源码
参考上面“获取源码的方法1和2”
将flink-1.11.1-src.tgz解压缩后,
1.#java版本
a)复制和修改文件
找到子目录flink-1.11.1-src/flink-1.11.1/flink-examples/flink-examples-batch/src/main/java/org/apache/flink/examples/java/wordcount
将其下的WordCount.java文件及util文件夹复制到
Flink-QuickStart-Java/src/main/java/Group1
修改WordCount.java
把WordCount.java中的
1.将package org.apache.flink.examples.java.wordcount改为
package Group1;
2.将import org.apache.flink.examples.java.wordcount.util.WordCountData;
改为
import Group1.util.WordCountData;
修改util/WordCountData.java
把package org.apache.flink.examples.java.wordcount.util改为
package Group1.util;
b)重新编译和打包
回到Flink-QuickStart-Java目录下,执行:
mvn clean package
c)提交作业
flink run -m master:8081 -c Group1.WordCount target/Flink-QuickStart-Java-1.0-SNAPSHOT.jar --input $FLINK_HOME/LICENSE --output /home/hadoop/tmp/wordcount-java-result001.txt
cat /home/hadoop/tmp/wordcount-java-result001.txt
#scala版本
a)复制和修改文件
找到子目录flink-1.11.1-src/flink-1.11.1/flink-examples/flink-examples-batch/src/main/scala/org/apache/flink/examples/scala/wordcount
将WordCount.scala复制到Flink-QuickStart-Scala/src/main/scala/Group1
修改WordCount.scala
把WordCount.scala中的
1.将package org.apache.flink.examples.scala.wordcount改为
package Group1
2.将import org.apache.flink.examples.java.wordcount.util.WordCountData;
改为
import Group1.util.WordCountData;
找到子目录flink-1.11.1-src/flink-1.11.1/flink-examples/flink-examples-batch/src/main/java/org/apache/flink/examples/java/wordcount
将其下的util文件夹复制到
Flink-QuickStart-Scala/src/main/scala/Group1
修改util/WordCountData.java
把package org.apache.flink.examples.java.wordcount.util改为
package Group1.util
b)重新编译和打包
回到Flink-QuickStart-Scala目录下,执行:
mvn clean package
c)提交作业
flink run -m master:8081 -c Group1.WordCount target/Flink-QuickStart-Scala-1.0-SNAPSHOT.jar --input $FLINK_HOME/LICENSE --output /home/hadoop/tmp/wordcount-java-result002.txt
cat /home/hadoop/tmp/wordcount-java-result002.txt
也可以到hdfs里面试试身手
hadoop fs -put $FLINK_HOME/LICENSE /mylab/mydata
hadoop fs -ls /mylab/mydata
#java版本
flink run -m master:8081 -c Group1.WordCount target/Flink-QuickStart-Java-1.0-SNAPSHOT.jar --input hdfs:///mylab/mydata/LICENSE --output hdfs:///mylab/mydata/wordcount-result001.txt
hadoop fs -ls /mylab/mydata
hadoop fs -cat /mylab/mydata/wordcount-result001.txt
#scala版本
flink run -m master:8081 -c Group1.WordCount target/Flink-QuickStart-Scala-1.0-SNAPSHOT.jar --input hdfs:///mylab/mydata/LICENSE --output hdfs:///mylab/mydata/wordcount-result002.txt
hadoop fs -ls /mylab/mydata
hadoop fs -cat /mylab/mydata/wordcount-result002.txt