IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> Flink流处理引擎系统学习(九) -> 正文阅读

[大数据]Flink流处理引擎系统学习(九)

前言

今天主要是过下Flink的DataStream API入门,编码基本套路、数据源等等。
昨天部门经理把项目的demo权限放开了,看了下,基本的大流程已经实现了。使用的是1.14.3版本(现在1.14.4),代码最后git时间是3.28。不得不说,demo基本把要改造的大流程写好了,还是强啊。所以说还是要保持好学习能力,是不是要走领导岗位就看个人了(不过不得不说当了一定级别的领导菜有更多的时间study up。这个级别不能低也不能高)。


一、Flink编码套路

运行模型
在这里插入图片描述
数据源
在这里插入图片描述
自定义数据源示例
在这里插入图片描述
转换
在这里插入图片描述
DataSink
在这里插入图片描述

二、迭代运算

1.简单理解迭代运算

在这里插入图片描述

2.流式迭代运算

在这里插入图片描述

3.延迟控制

在这里插入图片描述
理解梳理:
吞吐针对整体而言,延迟针对个体而言。


三、Flink调试

1、调试手段

在这里插入图片描述
在这里插入图片描述
PS:
显式创建本地环境不推荐这样写,getExecutionEnvironment方法里会判断环境,并创建环境。
在这里插入图片描述

2、数据模拟

在这里插入图片描述
在这里插入图片描述
实际上1.14.4里DataStreamUtil.collect()相关方法已过时,替代的是对keyedStream的reinterpretAsKeyedStream


四、流式迭代demo

业务需求:输入一组数据,分别进行减1运算,直到等于0为止

package spendreport.stream;

import org.apache.flink.api.common.functions.FilterFunction;
import org.apache.flink.api.common.functions.MapFunction;
import org.apache.flink.api.java.functions.KeySelector;
import org.apache.flink.client.program.StreamContextEnvironment;
import org.apache.flink.shaded.guava30.com.google.common.collect.Iterators;
import org.apache.flink.streaming.api.datastream.DataStream;
import org.apache.flink.streaming.api.datastream.DataStreamUtils;
import org.apache.flink.streaming.api.datastream.IterativeStream;
import org.apache.flink.streaming.api.datastream.KeyedStream;
import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;

/**
 * @author zhengwen
 **/
public class IterativeStreamJob {

  public static void main(String[] args) throws Exception {

    //输入一组数据,分别进行减1运算,直到等于0为止
    final StreamExecutionEnvironment env = StreamContextEnvironment.getExecutionEnvironment();

    DataStream<Long> input = env.generateSequence(0, 10);

    //基于输入流构建IterativeStream(迭代头)
    IterativeStream<Long> itStream = input.iterate();

    //定义迭代逻辑(map、fun等)
    DataStream<Long> minusOne = itStream.map(new MapFunction<Long, Long>() {
      @Override
      public Long map(Long value) throws Exception {
        //业务目的(进行减1运算)
        return value - 1;
      }
    });
    //定义反馈流逻辑(从迭代过的流中过滤出符合条件的元素组成的部分流反馈给迭代头互补性重复计算逻辑)
    DataStream<Long> greaterThanZero = minusOne.filter(new FilterFunction<Long>() {
      @Override
      public boolean filter(Long value) throws Exception {
        return value > 0;
      }
    });
    //调用IterativeStream的closeWith方法可以关闭一个迭代(迭代尾)
    itStream.closeWith(greaterThanZero);

    //定义终止迭代的逻辑(符合条件的元素将被分发给下游进行下一次迭代)
    DataStream<Long> lessThanZero = minusOne.filter(new FilterFunction<Long>() {
      @Override
      public boolean filter(Long value) throws Exception {
        return value <= 0;
      }
    });

    //打印
    //lessThanZero.print();

    //使用调试结果收集工具
    KeyedStream<Long, Object> ls = DataStreamUtils.reinterpretAsKeyedStream(lessThanZero,
        new KeySelector<Long, Object>() {
          @Override
          public Object getKey(Long value) throws Exception {
            return value;
          }
        });
    //打印
    ls.print();

    env.execute("IterativeStreamJob");


  }

}


总结

流式处理的迭代写法有点不好理解,跟我们平常的迭代方法区别有点大吧。其实用流水作业想就好理解多了,后面也许有高级的简单写法。
好,就写到这里,up!!!

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-04-30 08:47:05  更:2022-04-30 08:48:40 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 1:07:43-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码