flink开发案例_简单三步实现 Flink 环境搭建,618 再也不愁了!

70bc1817175401a884cde763faed331e.png
作者简介:王知无,资深大数据工程师。本文选自:拉勾教育专栏《42讲轻松通关 Flink》

本课时我们主要介绍 Flink 的入门程序以及 SQL 形式的实现。

上一课时已经讲解了 Flink 的常用应用场景和架构模型设计,这一课时我们将会从一个最简单的 WordCount 案例作为切入点,并且同时使用 SQL 方式进行实现,为后面的实战课程打好基础。

本文选自:拉勾教育专栏《42讲轻松通关 Flink》

Flink 开发环境

通常来讲,任何一门大数据框架在实际生产环境中都是以集群的形式运行,而我们调试代码大多数会在本地搭建一个模板工程,Flink 也不例外。

Flink 一个以 Java 及 Scala 作为开发语言的开源大数据项目,通常我们推荐使用 Java 来作为开发语言,Maven 作为编译和包管理工具进行项目构建和编译。对于大多数开发者而言,JDK、Maven 和 Git 这三个开发工具是必不可少的。

关于 JDK、Maven 和 Git 的安装建议如下表所示:

工具

版本建议

备注

JDK

1.8 或以上

Maven

建议 Maven 3.2.5

官网:https://maven.apache.org/download.cgi

Git

无特殊要求

建议跟随官网最新版本

Git 官网:https://git-scm.com/downloads

Flink 仓库: https://github.com/apache/flink

系统

推荐使用 Linux 系统

工程创建

一般来说,我们在通过 IDE 创建工程,可以自己新建工程,添加 Maven 依赖,或者直接用 mvn 命令创建应用:

mvn   archetype:generate  
        -DarchetypeGroupId=org.apache.flink 
        -DarchetypeArtifactId=flink-quickstart-java 
        -DarchetypeVersion=1.10.0

通过指定 Maven 工程的三要素,即 GroupId、ArtifactId、Version 来创建一个新的工程。同时 Flink 给我提供了更为方便的创建 Flink 工程的方法:

curl https://flink.apache.org/q/quickstart.sh | bash -s 1.10.0

我们在终端直接执行该命令:

7e844dd50cb0bdf7abe9c6b3b8a5bf5a.png

bb8b04f0a4b00cd231287692e0b03e94.png

直接出现 Build Success 信息,我们可以在本地目录看到一个已经生成好的名为 quickstart 的工程。

这里需要的主要的是,自动生成的项目 pom.xml 文件中对于 Flink 的依赖注释掉 scope:

<dependency>
   <groupId>org.apache.flink</groupId>
   <artifactId>flink-java</artifactId>
   <version>${flink.version}</version>
   <!--<scope>provided</scope>-->
</dependency>
<dependency>
   <groupId>org.apache.flink</groupId>
   <artifactId>flink-streaming-java_${scala.binary.version}</artifactId>
   <version>${flink.version}</version>
   <!--<scope>provided</scope>-->
</dependency>

本文选自:拉勾教育专栏《42讲轻松通关 Flink》

DataSet WordCount

WordCount 程序是大数据处理框架的入门程序,俗称“单词计数”。用来统计一段文字每个单词的出现次数,该程序主要分为两个部分:一部分是将文字拆分成单词;另一部分是单词进行分组计数并打印输出结果。

整体代码实现如下:

    public static void main(String[] args) throws Exception {


      // 创建Flink运行的上下文环境
      final ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment();
      
      // 创建DataSet,这里我们的输入是一行一行的文本
      DataSet<String> text = env.fromElements(
            "Flink Spark Storm",
            "Flink Flink Flink",
            "Spark Spark Spark",
            "Storm Storm Storm"
      );
      // 通过Flink内置的转换函数进行计算
      DataSet<Tuple2<String, Integer>> counts =
            text.flatMap(new LineSplitter())
                  .groupBy(0)
                  .sum(1);
      //结果打印
      counts.printToErr();


   }


   public static final class LineSplitter implements FlatMapFunction<String, Tuple2<String, Integer>> {


      @Override
      public void flatMap(String value, Collector<Tuple2<String, Integer>> out) {
         // 将文本分割
         String[] tokens = value.toLowerCase().split("W+");
         
         for (String token : tokens) {
            if (token.length() > 0) {
               out.collect(new Tuple2<String, Integer>(token, 1));
            }
         }
      }
   

实现的整个过程中分为以下几个步骤。

首先,我们需要创建 Flink 的上下文运行环境:

ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment();

然后,使用 fromElements 函数创建一个 DataSet 对象,该对象中包含了我们的输入,使用 FlatMap、GroupBy、SUM 函数进行转换。

最后,直接在控制台打印输出。

总结

本课时介绍了 Flink 的工程创建。第一次体验了 Flink SQL 的强大之处,让你有一个直观的认识,为后续内容打好基础。

以上就是本课时的内容。在下一课时中,我将介绍“Flink 的编程模型与其他框架比较”,下一课时见。

本文选自:拉勾教育专栏《42讲轻松通关 Flink》

版权声明:本文版权归属拉勾教育及该专栏作者,任何媒体、网站或个人未经本网协议授权不得转载、链接、转贴或以其他方式复制发布/发表,违者必究。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值