码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 【实战-05】 flinksql look up join


    摘要

    look up join 能做什么? 不饶关子直接说答案, look up join 就是 广播。 重要是事情说三遍,广播。flinksql中的look up join 就类似于flinks flink Datastream api中的广播的概念,但是又不完全相同,对于初次访问的数据会加入缓存, 一定时间未访问到的则会从缓存中去除。而广播则是直接广播到每个exxcotor.
    比如我们有一张订单表orders, 那么假设我们在进行flink计算的时候想获取该订单的相关的用户数据。 此时可以将用户数据用look up join 加载进来。
    look up join 又称维表 在DataStream 中又称伟广播, 理解了这些就比较简单了。

    缺点

    不适合大量数据的 look up join, 因为会占用过多内存。 在业内很多人喜欢用hbase做缓存插件。也可以用 mysql 等其他外部存储系统,在任务启动的时候 外部的维表会被加载到任务内存中

    语法

    左表 要设置proress Time , 右表为 缓存表

    create TEMPORARY table orders(
       `order_id` VARCHAR,                                                
       `order_info` VARCHAR,
       `user_id` VARCHAR,
       process_time AS PROCTIME()  # 这句语法是严格要求的
    )with(
        'connector' = 'kafka',                                       
     	'topic' = 'topic-01;topic-02',                                   
     	'properties.bootstrap.servers' = 'xxx:9092,yyy:9092',
     	'properties.group.id' = 'test',
     	'scan.startup.mode' = 'timestamp',
       'scan.startup.timestamp-millis' = '1680883200000',
     	'format' = 'raw'
     );
    create TEMPORARY table users(     
    	`user_id` VARCHAR,                                          
    	`user_name` VARCHAR
    )with(
        # 其他外部系统,省略
     );
     
    SELECT 
    	o.order_id, 
    	o.order_info,
    	u.user_id,
    	u.user_name
    FROM orders AS o
    left JOIN users FOR SYSTEM_TIME AS OF o.proc_time AS u # 这句语法是严格要求的
    ON o.user_id= u.user_id
    where ...# 省略where语句
    ;
    # 注意: 一般都是用left  join 
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
  • 相关阅读:
    R: 阿尔法α多样性计算和箱图制作,以及差异分析
    chrome中的一些调试工具
    (附源码)计算机毕业设计SSM建筑工地环保监控系统研究
    websocket拦截
    写一个c程序,要求用户输入一个数字。你的程序将检查输入的数字是否是质数如果是质数,则相应地打印一条消息
    数据库 高阶语句2
    3.Linux文件管理命令-----cat 显示文本文件内容
    YOLOv8快速复现 训练 SCB-Dataset3-S 官网版本 ultralytics
    在 CentOS 8 上为Apache HTTPD 配置 HTTPS
    【面试题】数组去重的五种方法(必会)
  • 原文地址:https://blog.csdn.net/qq_36066039/article/details/132671929
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号