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

  • 相关阅读:
    c语言结构体数组引用
    c语言结构体数组定义的三种方式
    如何为SAP WebIDE开发扩展(Extension),并部署到SAP云平台上
    SAP SRM ABAP Webdynpro和CFCA usb key集成的一个原型开发
    使用SAP API portal进行SAP SuccessFactors的API测试
    SAP UI5应用里的页面路由处理
    在SAP WebIDE Database Explorer里操作hdi实例
    如何使用SAP事务码SAT进行UI应用的性能分析
    使用SAP WebIDE进行SAP Cloud Platform Business Application开发
    SAP CRM WebClient UI ON_NEW_FOCUS的用途
  • 原文地址:https://www.cnblogs.com/ldsweely/p/11980896.html
Copyright © 2011-2022 走看看