关于大数据:从零开始快速构建自己的Flink应用

6次阅读

共计 1490 个字符,预计需要花费 4 分钟才能阅读完成。

本文介绍如何在 mac 下疾速构建属于本人的 Flink 利用。

1. 本地装置 flink

在 mac 上应用 homebrew 装置 flink:

brew install apache-flink

查看装置的地位:

brew info apache-flink

进入装置目录,启动 flink 集群:

cd /usr/local/Cellar/apache-flink/1.18.0
./libexec/bin/start-cluster.sh

进入 web 页面:http://localhost:8081/

2. 构建我的项目

基于模板间接构建一个我的项目:

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

在我的项目的 DataStreamJob 类实现如下计数的性能:

package org.myorg.quickstart;

import org.apache.flink.api.common.functions.FlatMapFunction;
import org.apache.flink.api.java.tuple.Tuple2;
import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;
import org.apache.flink.util.Collector;

public class DataStreamJob {public static void main(String[] args) throws Exception {StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();

        env.socketTextStream("127.0.0.1", 9000)
        .flatMap(new LineSplitter())
        .keyBy(0)
        .sum(1)
        .print();

        env.execute("WordCount");
    }

    public static final class LineSplitter implements FlatMapFunction<String, Tuple2<String, Integer>> {
        @Override
        public void flatMap(String s, Collector<Tuple2<String, Integer>> collector) {String[] tokens = s.toLowerCase().split("\\W+");

            for (String token : tokens) {if (token.length() > 0) {collector.collect(new Tuple2<>(token, 1));
                }
            }
        }
    }
}

在下面的例子中,咱们应用 DataStream API 构建了一个 Flink 利用,数据源(source)为本地的 socket 9000 端口,通过 flatMap、keyBy、sum 三个转换操作之后,最初打印到规范输入流。整体流程如下图:

3. 运行

启动 socket 连贯,监听 9000 端口:

nc -l 9000

打包,上传(能够应用 Web UI 界面上传,也能够应用命令行上传)。

上传后,就能够在 WebUI 看到正在运行的 job 了。

此时通过在 socket 输出内容,

就能够在 task manager 的 stdout 看到打印后果了。

4. 总结

本文从零开始在本地构建运行了一个 Flink 利用,包含 Flink 集群的装置、Flink 利用的构建,以及 Flink 利用的运行。

正文完
 0