flink维表join的几种方式(1)

2023-10-27

维表join的几种方式
一 将维表预加载到内存关联
实现方式:
定义一个类实现RichFlatMapFunction在open()方法中读取全部数据加载到内存中。
优缺点:
因为存在内存中,所以仅支持小数据量维表;因为open方法中读取,所以维表变化需要重启作业。

二 通过Distributed Cache分发本地维度文件到task manager后加载到内存关联
实现方式:
通过env.registerCachedFile注册文件
实现RichFunction在open()方法中通过RuntimeContext获取cache文件
解析使用文件数据
优缺点:
不需要外部数据库
支持的数据量小,更新维表配置文件需要重启作业

public class BatchDemoDisCache {

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

        //获取运行环境
        ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment();

        //1:注册一个文件,可以使用hdfs或者s3上的文件
        env.registerCachedFile("d:\\discache.txt","a.txt");

        DataSource<String> data = env.fromElements("a", "b", "c", "d");

        DataSet<String> result = data.map(new RichMapFunction<String, String>() {
            private ArrayList<String> dataList = new ArrayList<String>();

            @Override
            public void open(Configuration parameters) throws Exception {
                super.open(parameters);
                //2:使用文件
                File myFile = getRuntimeContext().getDistributedCache().getFile("a.txt");
                List<String> lines = FileUtils.readLines(myFile);
                for (String line : lines) {
                    this.dataList.add(line);
                    System.out.println("discache:" + line);
                }
            }
            
            @Override
            public String map(String value) throws Exception {
                //在这里就可以使用dataList
                return value;
            }
        });
        result.print();
    }
}

三 热存储关联查询
实现方式:
将维度数据导入到热存储redis hbase es等,通过异步IO的方式查询,利用cache机制将维度数据缓存在内存。
优缺点:
维度数据不受限与内存,支持较多维度数据
维度更新结果可能有延迟,而且对外部存储的压力较大

四 广播维表
实现方式:
利用broadcast State将维度数据流广播到下游做join
将维度数据发送到kakfa作为广播原始流S1
定义状态描述符MapStateDescriptor 调用S1.broadcast()获得broadCastStream S2
调用非广播流S3.connect(S2),得到BroadcastConnectedStream S4
应用混合流的S4.process(),并在KeyedBroadcastProcessFunction/BroadcastProcessFunction实现关联处理逻辑
优缺点:
维度数据实时更新
数据保存在内存中,支持维表数据量比较小。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

flink维表join的几种方式(1) 的相关文章

  • 2.搭建一个spring-boot项目(git项目)

    很多同学在搭建一个springboot项目的时候会遇到很多问题 闲来无事我就自己搭建了一个基础的框架 大家可以自己看看 框架主要包括 初始化配置 数据库配置 Mysql mybatis plus JPA 自动生成代码 logback 基本上
  • Grafana 安装(Centos7)

    一 联网安装 1 Grafana安装 1 下载grafana wget https dl grafana com oss release grafana 8 0 3 1 x86 64 rpm wget https dl grafana co

随机推荐

  • java stream 多个filter_跟光磊学Java开发-流式编程

    使用Stream API操作集合 假设现在有一批名字数据 需要筛选出姓张的人后来需求又变了 需要筛选出姓张 而且名字长度大于等于3的人 使用传统方式操作集合只要操作集合都不得不需要使用循环遍历元素每次筛选后都需要使用新的集合存储元素 pac
  • jdbc的练习:建立一个连接数据库的类

    import java sql public class DatabaseConnection String driver com mysql jdbc Driver String url jdbc mysql localhost 3306
  • 【Pytorch深度学习实战】(8)双向循环神经网络(BiRNN)

    大家好 我是Sonhhxg 柒 希望你看完之后 能对你有所帮助 不足请指正 共同学习交流 个人主页 Sonhhxg 柒的博客 CSDN博客 欢迎各位 点赞 收藏 留言 系列专栏 机器学习 ML 自然语言处理 NLP 深度学习 DL fore
  • c语言:char *c;测试

    include
  • html图片列表选择器,CSS 列表

    CSS 列表 从某种意义上讲 不是描述性的文本的任何内容都可以认为是列表 人口普查 太阳系 家谱 参观菜单 甚至你的所有朋友都可以表示为一个列表或者是列表的列表 由于列表如此多样 这使得列表相当重要 所以说 CSS 中列表样式不太丰富确实是
  • Laravel 图片不显示解决方案

    转自 https blog csdn net qq 18951197 article details 93163149 图片文件存储位置为 项目目录 storage app public 1 在项目目录下执行命令创建过软链接 php art
  • ELF文件查看利器之objdump用法

    Android在NDK开发工具中提供了objdump 用来帮助开发者查看编译后目标文件的组成结构和具体内容 常用的有以下几个功能选项 1 a或者 archive headers 这个参数起到的作用和ar命令相似 用来看一个 a静态库文件中包
  • OpenStack--部署nova控制节点与计算节点

    官方部署文档 https docs openstack org mitaka zh CN install guide rdo common get started compute html 1 安装并配置 nova 控制节点 官方安装文档
  • ISP算法学习之LSC(镜头阴影校正)

    LSC Lens Shading Correction 是ISP算法中的一个重要组成部分 用于校正镜头遮挡 lens shading 现象 镜头遮挡是由于镜头和图像传感器的光学特性导致的图像亮度不均匀的现象 通常 图像的中心部分较亮 而边缘
  • 破解软件的原理是什么(软件被破解公开)

    到底魔高一丈吗 还是路的高度是一丈 破解与破解之间就像矛盾和矛盾 从第一个软件上线之日起 这就成为了永恒的话题 即使是牛群也不可避免地破译了自己的软件 这不是技术问题 而是信息化时代的产物 软件基于二进制文件存储在系统中 运行时系统平台必须
  • rsync推拉复制同步脚本编写(详细)内附jenkins通过rsync脚本部署到tomcat

    本处基于saltstack的配置目录里分解rsync的tar包 倒序讲解 root master rsync ls rsyncd tar gz 后两个是推复制rsyncd tui master tar gz rsync tui slave
  • JDBC连接MySQL数据库

    文章目录 前言 一 怎么链接数据库 二 使用步骤 https img blog csdnimg cn 91945baa8c094d48890a557614f46fd7 png x oss process image watermark ty
  • stm32定时器详解

    目录 一 时基配置 定时器定时周期计算 二 捕获 比较通道配置 定时器捕获比较模式说明 三 中断优先级配置 四 开启中断与定时器相关函数 链接 一 时基配置 定时器时基配置主要是配置定时器周期 即分频系数和自动重载寄存器 比如现在我需要配置
  • 土壤湿度计检测模块 土壤湿度传感器 机器人智能小车

    https item taobao com item htm spm a1z09 2 0 0 67002e8dtYpcae id 522556171397 u rklgtpkf6bb 土壤湿度模块是一个简易的水分传感器可用于检测土壤的水分
  • 组件路由传参【vue3】

    大家对于vue3也已经不太陌生了 但是在路由传参中会遇到一点小问题 不知大家是否也遇到过 一起来看一下 首先是我们熟悉的vue路由传参 无非就是个router来进行的操作 首先就是导入vue router 这里一定要导入4版本的 不然vue
  • 文件和注册表的重定向解决方法

    注册表重定向解决办法 转载http www 2cto com os 201411 350858 html 32位程序如何访问64位的注册表 HKLM Software 在调用函数RegCreateKeyEx创建注册表项时 对其第六个参数RE
  • .NET Core 在程序集中集成Razor视图

    前言 有时候 我们在开发一个程序集供其他项目引用的时候 可能需要对外输出一些HTML的结构数据 还有一些情况我们可能开发的是一个中间件 这个中间件需要提供一些界面来对外展示数据或者是内部的一些程序的运行信息 这个时候我们也需要一个界面来做这
  • 电路原理图中的“NC“是什么意思?

    电路原理图中的 NC 是什么意思 1 在看电路原理图的时候 电路原理图上有 NC 我查了下是表示 此处不贴任何电子器件 我看了下实际的电路板确实没贴 那么不贴的话是不是相当于这个位置空出来了 断路 了 就是说芯片的这个引脚在电路中是 悬空状
  • 程序员必知的23种设计模式之享元模式

    文章目录 1 模式引出 展示网站项目需求 1 1 传统方案解决网站展现项目 1 2 传统方案解决网站展现项目 问题分析 2 享元模式基本介绍 2 1 享元模式的原理类图 2 2 内部状态和外部状态 可共享和不可共享 3 方案修改 4 享元模
  • flink维表join的几种方式(1)

    维表join的几种方式 一 将维表预加载到内存关联 实现方式 定义一个类实现RichFlatMapFunction在open 方法中读取全部数据加载到内存中 优缺点 因为存在内存中 所以仅支持小数据量维表 因为open方法中读取 所以维表变