• Flink基础(五):DS简介(5) 编写第一个Flink程序


    1 在IDEA中编写Flink程序

    Scala版Flink程序编写

    本项目使用的Flink版本为最新版本,也就是1.11.0。现在提供maven项目的配置文件。

    1. 使用Intellij IDEA创建一个Maven新项目
    2. 勾选Create from archetype,然后点击Add Archetype按钮
    3. GroupId中输入org.apache.flinkArtifactId中输入flink-quickstart-scalaVersion中输入1.11.0,然后点击OK
    4. 点击向右箭头,出现下拉列表,选中flink-quickstart-scala:1.11.0,点击Next
    5. Name中输入FlinkTutorialGroupId中输入com.atguiguArtifactId中输入FlinkTutorial,点击Next
    6. 最好使用IDEA默认的Maven工具:Bundled(Maven 3),点击Finish,等待一会儿,项目就创建好了

    编写WordCount.scala程序

    import org.apache.flink.streaming.api.scala._
    import org.apache.flink.streaming.api.windowing.time.Time
    
    object StreamingJob {
    
      /** Main program method */
      def main(args: Array[String]) : Unit = {
    
        // get the execution environment
        StreamExecutionEnvironment env: StreamExecutionEnvironment = StreamExecutionEnvironment
          .getExecutionEnvironment
    
        // get input data by connecting to the socket
        val text: DataStream[String] = env
          .socketTextStream("localhost", 9999, '
    ')
    
        // parse the data, group it, window it, and aggregate the counts
        val windowCounts = text
          .flatMap { w => w.split("\s") }
          .map { w => WordWithCount(w, 1) }
          .keyBy("word")
          .timeWindow(Time.seconds(5))
          .sum("count")
    
        // print the results with a single thread, rather than in parallel
        windowCounts
          .print()
          .setParallelism(1)
    
        env.execute("Socket Window WordCount")
      }
    
      /** Data type for words with count */
      case class WordWithCount(word: String, count: Long)
    }

    打开一个终端(Terminal),运行以下命令

    $ nc -lk 9999

    接下来使用IDEA运行就可以了。

    Java版Flink程序编写

    1. 使用Intellij IDEA创建一个Maven新项目
    2. 勾选Create from archetype,然后点击Add Archetype按钮
    3. GroupId中输入org.apache.flinkArtifactId中输入flink-quickstart-javaVersion中输入1.11.0,然后点击OK
    4. 点击向右箭头,出现下拉列表,选中flink-quickstart-java:1.11.0,点击Next
    5. Name中输入FlinkTutorialGroupId中输入com.atguiguArtifactId中输入FlinkTutorial,点击Next
    6. 最好使用IDEA默认的Maven工具:Bundled(Maven 3),点击Finish,等待一会儿,项目就创建好了

    编写WordCount.java程序

    import org.apache.flink.api.common.functions.FlatMapFunction;
    import org.apache.flink.api.java.tuple.Tuple2;
    import org.apache.flink.streaming.api.datastream.DataStream;
    import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;
    import org.apache.flink.util.Collector;
    
    public class WordCountFromSocket {
    
        public static void main(String[] args) throws Exception {
            final StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
            env.setParallelism(1);
    
            DataStream<String> stream = env.socketTextStream("localhost", 9999);
    
            stream.flatMap(new Tokenizer()).keyBy(r -> r.f0).sum(1).print();
    
            env.execute("Flink Streaming Java API Skeleton");
        }
    
        public static class Tokenizer implements FlatMapFunction<String, Tuple2<String, Integer>> {
            @Override
            public void flatMap(String value, Collector<Tuple2<String, Integer>> out) throws Exception {
                String[] stringList = value.split("\s");
                for (String s : stringList) {
                    // 使用out.collect方法向下游发送数据
                    out.collect(new Tuple2(s, 1));
                }
            }
        }
    }

    2 下载Flink运行时环境,提交Jar包的运行方式

    下载链接:http://mirror.bit.edu.cn/apache/flink/flink-1.11.1/flink-1.11.1-bin-scala_2.11.tgz

    然后解压

    $ tar xvfz flink-1.11.1-bin-scala_2.11.tgz
    

    启动Flink集群

    $ cd flink-1.11.1
    $ ./bin/start-cluster.sh
    

    可以打开Flink WebUI查看集群状态:http://localhost:8081

    IDEA中使用maven package打包。

    提交打包好的JAR

    $ cd flink-1.11.1
    $ ./bin/flink run 打包好的JAR包的绝对路径
    

    停止Flink集群

    $ ./bin/stop-cluster.sh
    

    查看标准输出日志的位置,在log文件夹中。

    $ cd flink-1.11.1/log

    本文来自博客园,作者:秋华,转载请注明原文链接:https://www.cnblogs.com/qiu-hua/p/13412865.html

  • 相关阅读:
    Oracle SQL部分练习题
    Oracle 数据库和监听器开机自启动两种实现方法
    用Python连接SQLServer抓取分析数据、监控 (pymssql)
    Linux6.5 安装Python3.X(转载)
    SQLServer xp_instance_regread returned error 5,Access is denied(配置最小权限)
    [MySQL]存储过程
    [MySQL]触发器
    Linux 修改IP地址
    MySQL: InnoDB存储引擎
    mysql 重新添加主节点 (GTID)
  • 原文地址:https://www.cnblogs.com/qiu-hua/p/13412865.html
Copyright © 2020-2023  润新知