zoukankan      html  css  js  c++  java
  • Flink入门 构建一个应用

    构建一个应用

    当然了,我们可以用maven,一顿new,new出来一个过程,这里我们将使用 Flink Maven Archetype 来创建我们的项目结构和一些初始的默认依赖。在你的工作目录下,运行如下命令来创建项目:

    mvn archetype:generate 
        -DarchetypeGroupId=org.apache.flink 
        -DarchetypeArtifactId=flink-quickstart-java 
        -DarchetypeVersion=1.7.2 
        -DgroupId=flink-project 
        -DartifactId=flink-project 
        -Dversion=0.1 
        -Dpackage=myflink 
        -DinteractiveMode=false

    这样一个工程就构建好了。

    还有一个更加牛逼的办法,看这里:

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

    直接在命令行执行上面的命令,结果如下图:

    image

    同样可以构建一个Flink工程,而且自带一些demo。

    原理是什么?点一下它看看就明白了。
    https://flink.apache.org/q/quickstart.sh

    编写一个入门级的WordCount

    
        //
        //    Program
        //
    
        public static void main(String[] args) throws Exception {
    
            // set up the execution environment
            final ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment();
    
            // get input data
            DataSet<String> text = env.fromElements(
                    "To be, or not to be,--that is the question:--",
                    "Whether 'tis nobler in the mind to suffer",
                    "The slings and arrows of outrageous fortune",
                    "Or to take arms against a sea of troubles,"
                    );
    
            DataSet<Tuple2<String, Integer>> counts =
                    // split up the lines in pairs (2-tuples) containing: (word,1)
                    text.flatMap(new LineSplitter())
                    // group by the tuple field "0" and sum up tuple field "1"
                    .groupBy(0) //(i,1) (am,1) (chinese,1)
                    .sum(1);
    
            // execute and print result
            counts.print();
    
        }
    
        //
        //     User Functions
        //
    
        /**
         * Implements the string tokenizer that splits sentences into words as a user-defined
         * FlatMapFunction. The function takes a line (String) and splits it into
         * multiple pairs in the form of "(word,1)" (Tuple2&lt;String, Integer&gt;).
         */
        public static final class LineSplitter implements FlatMapFunction<String, Tuple2<String, Integer>> {
    
            @Override
            public void flatMap(String value, Collector<Tuple2<String, Integer>> out) {
                // normalize and split the line
                String[] tokens = value.toLowerCase().split("\W+");
    
                // emit the pairs
                for (String token : tokens) {
                    if (token.length() > 0) {
                        out.collect(new Tuple2<String, Integer>(token, 1));
                    }
                }
            }
        }
    }
    

    类似的例子,官方也有提供的,可以在这里下载:
    WordCount官方推荐

    运行

    本地右键运行:

    image

    提交到本地单机Flink上

    • 进入工程目录,使用以下命令打包
    mvn clean package -Dmaven.test.skip=true

    然后,进入 flink 安装目录 bin 下执行以下命令提交程序:

    flink run -c org.myorg.laowang.WordCount /Users/wangzhiwu/WorkSpace/quickstart/target/quickstart-0.1.jar

    分别制定main方法和jar包的地址。

    在刚才的控制台中,可以看到:

    image
    我们刚才提交过的程序。

    flink的log目录下有我们提交过的任务的日志:

    image

  • 相关阅读:
    TCP报文发送工具
    Java基础—注解的使用
    STM32以太网ETH
    EC20 minipcie版4g模块开发笔记
    usb端点(endpoint)知识详解
    STM32 usb_mem.c和usb_sil.c文件的分析
    USB的中断说明
    STM32 可编程电压监测器(PVD)实现数据掉电保存
    关于FSMC地址线的理解
    STM32F4—fsmc的配置步骤
  • 原文地址:https://www.cnblogs.com/ldsweely/p/11980896.html
Copyright © 2011-2022 走看看