好玩的大数据之51:flink编程实验1(利用maven构造flink-quick-start程序,含java和scala版)

一、简介


本文利用Maven来构造flink示例flink-quickstart-java和flink-quickstart-scala

maven的安装和配置,请参见“好玩的大数据:maven安装(maven-3.6.3)”

二、获取源程序


方法1:利用github获取flink源码

下载地址:https://github.com/

下载得到:flink-master.zip

搜索flink

github首页

点apache/flink

apache/flink

点击code=>Download ZIP

下载flink源码

解压缩: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官网和github下载的源码对比

解压缩:flink-master.zip

找到flink-quickstart子目录

flink-quickstart

flink-quickstart-java子目录结构

flink-quickstart-java子目录结构

flink-quickstart-scala子目录结构

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

Flink-QuickStart-Java下的目录结构

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

Flink-QuickStart-Scala下的目录结构

Flink-QuickStart-Scala下的目录结构 

三、在pom.xml中增加依赖(可选)


有些已经有了就不必加了,这里只作为例子

#flink-java

  org.apache.flink

  flink-java

  1.11.1

  provided

#flink-streaming-java_2.11

  org.apache.flink

  flink-streaming-java_2.11

  1.11.1

  provided

#flink-scala_2.11

  org.apache.flink

  flink-scala_2.11

  1.11.1

  provided

#flink-streaming-scala_2.11

  org.apache.flink

  flink-streaming-scala_2.11

  1.11.1

  provided

#flink-streaming-scala_2.11

#flink-connector-kafka-0.10_2.11

    org.apache.flink

    flink-connector-kafka-0.10_2.11

    1.11.1

四、编译、打包


#java版本

        cd Flink-QuickStart-Java

        mvn clean package

java版本

编译打包生成的target目录

编译打包生成的target目录

#scala版本

        cd Flink-QuickStart-Scala

        mvn clean package

scala版本

编译打包生成的target目录

编译打包生成的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

copy文件

将其下的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

你可能感兴趣的:(好玩的大数据之51:flink编程实验1(利用maven构造flink-quick-start程序,含java和scala版))