【Flink】一、0基础入门

前言

听说flink是非常优秀的实时计算组件,那么我们来快速了解一番。

1 下载安装

  • 安装java8

下载jdk安装包,下面是安装脚本(供参考):

#!/bin/sh
install_path="/opt/"

rm -rf ${install_path}/jdk1.8.0_111
tar --no-same-permissions --no-same-owner -zxf jdk-8u111-linux-x64.tar.gz -C ${install_path}/
chmod -R 777 ${install_path}/jdk1.8.0_111
sed -i -e '$a export JAVA_HOME='${install_path}'/jdk1.8.0_111' -e '$a export PATH=$JAVA_HOME/bin:$PATH' -e '$a export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar' /etc/profile
source /etc/profile
  • 下载Flink

下载地址:https://flink.apache.org/downloads.html

我选择了最新的 flink-1.11.2-bin-scala_2.12.tgz下载,上传服务器,解压。

2 启停集群及样例

  • 启动
./bin/start-cluster.sh
  • 执行样例WordCount

WordCount:实时计算入门经典,通过持续接收文本,实时统计文本已出现的单词数量

./bin/flink run examples/streaming/WordCount.jar
  • 查看执行结果
tail log/flink-*-taskexecutor-*.out

完整过程:

  • 停止
./bin/stop-cluster.sh
  • 8081页面控制台

通过页面也可以执行任务提交,任务结果查看。

3 自定义WordCount

  • 完整5步:设置环境-->获取数据-->处理数据-->输出结果-->提交任务
public class MyWordCount {

    public static void main(String[] args) throws Exception {
        //0.设置执行环境:用于定义任务的属性、创建数据源以及最终启动任务的执行。
        StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
        //1.将数据源转换为数据流对象
        DataStream<String> text = env.fromElements(WORDS);
        //2.处理数据
        DataStream<Tuple2<String, Integer>> counts =
        // 分离单词之后组装成键值对: (word,1)
        text.flatMap(new FlatMapFunction<String, Tuple2<String, Integer>>() {
            public void flatMap(String s, Collector<Tuple2<String, Integer>> collector){
                // 全部小写化之后,再按[^A-Za-z0-9_]拆分出单词
                String[] tokens = s.toLowerCase().split("\\W+");
                // 组装成键值对传入收集器
                for (String token : tokens) {
                    if (token.length() > 0) {
                        collector.collect(new Tuple2<String, Integer>(token, 1));
                    }
                }
            }
        })
        // 根据单词(第一列)分组,然后将数量(第二列)相加
        .keyBy(0).sum(1);
        //3.输出数据
        counts.print();
        //4.执行任务
        env.execute("Streaming WordCount");
    }

    /**
     * 自定义数据源
     */
    public static final String[] WORDS = new String[]{
            "hello world", "hello word", "hello flink", "flink study"
    };
}
  • 将打好的jar包添加到任务队列

  • 提交任务

  • 查看结果

  • 对比输入输出

输入:

"hello world", "hello word", "hello flink", "flink study"

输出:

(hello,1)
(world,1)
(hello,2)
(word,1)
(hello,3)
(flink,1)
(flink,2)
(study,1)

 


爱家人,爱生活,爱设计,爱编程,拥抱精彩人生!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qqchaozai

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值