专栏名称: zhisheng
Java攻城狮
目录
相关文章推荐
芋道源码  ·  Nginx 部署负载均衡服务全解析 ·  昨天  
芋道源码  ·  用 Spring AOP 优化 IN ... ·  2 天前  
芋道源码  ·  几个必会的JDK性能监控和故障处理工具 ·  3 天前  
芋道源码  ·  大厂都在用的 Git 代码管理规范 ! ·  4 天前  
51好读  ›  专栏  ›  zhisheng



《从0到1学习Flink》—— Mac 上搭建 Flink 1.6.0 环境并构建运行简单程序入门

zhisheng  · 掘金  · Java  · 2018-11-12 15:40

正文

阅读 39



《从0到1学习Flink》—— Mac 上搭建 Flink 1.6.0 环境并构建运行简单程序入门

009

准备工作

1、安装查看 Java 的版本号,推荐使用 Java 8。

安装 Flink

2、在 Mac OS X 上安装 Flink 是非常方便的。推荐通过 homebrew 来安装。

brew install apache-flink
复制代码

3、检查安装:

flink --version
复制代码

结果:

Version: 1.6.0, Commit ID: ff472b4
复制代码

4、启动 flink

zhisheng@zhisheng  /usr/local/Cellar/apache-flink/1.6.0/libexec/bin  ./start-cluster.sh
Starting cluster.
Starting standalonesession daemon on host zhisheng.
Starting taskexecutor daemon on host zhisheng.
复制代码

接着就可以进入 web 页面(http://localhost:8081/) 查看

1flink-web

demo

1、新建一个 maven 项目

flink-demo

创建一个 SocketTextStreamWordCount 文件,加入以下代码:

package com.zhisheng.flink;

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

/**
 * Created by zhisheng_tian on 2018/9/18
 */
public class SocketTextStreamWordCount {
    public static void main(String[] args) throws Exception {
        //参数检查
        if (args.length != 2) {
            System.err.println("USAGE:\nSocketTextStreamWordCount <hostname> <port>");
            return;
        }

        String hostname = args[0];
        Integer port = Integer.parseInt(args[1]);


        // set up the streaming execution environment
        final StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();

        //获取数据
        DataStreamSource<String> stream = env.socketTextStream(hostname, port);

        //计数
        SingleOutputStreamOperator<Tuple2<String, Integer>> sum = stream.flatMap(new LineSplitter())
                .keyBy(0)
                .sum(1);

        sum.print();

        env.execute("Java WordCount from SocketTextStream Example");
    }

    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<String, Integer>(token, 1));
                }
            }
        }
    }
}
复制代码

接着进入工程目录,使用以下命令打包。

mvn clean package -Dmaven.test.skip=true
复制代码

2build

然后我们开启监听 9000 端口:

nc -l 9000  
复制代码

监听

最后进入 flink 安装目录 bin 下执行以下命令跑程序:

flink run -c com.zhisheng.flink.SocketTextStreamWordCount /Users/zhisheng/IdeaProjects/flink/word-count/target/original-word-count-1.0-SNAPSHOT.jar 127.0.0.1 9000
复制代码

注意换成你自己项目的路径。

4run







请到「今天看啥」查看全文