首页 > 其他分享 >Flink的几种Join总结

Flink的几种Join总结

时间:2023-06-07 11:33:38浏览次数:37  
标签:join 过期 Flink 几种 左流 Join 右流 id

Regular join组

第一种:
left join
流任务中,只要left的流数据到了,就输出。如果右边流没有到,输出 [L,NULL];如果右边流到了,输出 [L, R]

第二种:
right join
流任务中,只要right的流数据到了,就输出。如果左边流没有到,输出 [NULL,R];如果右边流到了,输出 [L, R]

第三种:
inner join
流任务中,只有两条流 Join 到才输出,输出 [L, R]

第四种:
outer join(full join)全连接
流任务中,左流或右流的数据到达之后,无论有没有 Join 到另外一条流的数据,都会输出。
对右流来说:能Join 到左边就输出 +[L, R];没 Join 到输出 +[null, R];
对左流来说:能Join 到右流就输出 +[L, R],没 Join 到输出 +[L, null];

语法示例(无设置过期时间):

SELECT *
FROM Orders
INNER JOIN Product
ON Orders.product_id = Product.id;


SELECT *
FROM Orders
LEFT JOIN Product
ON Orders.product_id = Product.id


SELECT *
FROM Orders
RIGHT JOIN Product
ON Orders.product_id = Product.id


SELECT *
FROM Orders
FULL OUTER JOIN Product
ON Orders.product_id = Product.id

上述的这些没有设置过期时间的inner join / left join /right join /full join ,默认的数据不会过期,当然可以自己设置过期时间。
当inner join 设置了过期时间,比如10秒,那么左流和右流都是严格保存10秒,不管你是不是一直在用在read这个数据,它到时间了都会被删掉。
当left join 设置了过期时间,比如10秒,那么左流和右流是有区别的,右流还是不管你在不在用都是准时删除;而左流就是闲置10秒才会被删除,也就是如果左流的某个值一直被关联,那么就一直不会过期。
当right join 设置了过期时间,比如10秒,那么左流和右流是有区别的,左流还是不管你在不在用都是准时删除;而右流就是闲置10秒才会被删除,也就是如果右流的某个值一直被关联,那么就一直不会过期。
当 join 设置了过期时间,比如10秒,那么左流和右流都是闲置10秒才删除,也就是如果不论是左流还是右流,只要某个值一直被关联,那么就一直不会过期。

底层原理



标签:join,过期,Flink,几种,左流,Join,右流,id
From: https://www.cnblogs.com/lukairui/p/17462887.html

相关文章

  • C语言判断大小端的几种方法
    在操作系统中,经常会用到判断大小端,很多面试题中也会经常遇到,以前的时候没有总结过,这里总结一下。以后用到了就直接可以用了。所谓的大小端,大致的解释意思就是:【大端模式】CPU对操作数的存放方式是高地址存放低位,低地址存放高位。【小端模式】CPU对操作数的存放方式是高地址存......
  • 几种分布式文件系统的优缺点归纳与总结
    1、常用的分布式文件系统有以下几种:1.HadoopHDFS:HadoopDistributedFileSystem(HDFS)是ApacheHadoop生态系统的一部分,用于存储和处理大数据。2.Ceph:Ceph是一个开源的分布式存储系统,提供了高可用性、高性能和可扩展性。3.GlusterFS:GlusterFS是一个开源的分布式文件系统,提供......
  • C#调用默认浏览器打开网页的几种方法
    方法一:从注册表中读取默认浏览器可执行文件路径    privatevoidbutton1_Click(objectsender,EventArgse)    {      //从注册表中读取默认浏览器可执行文件路径      RegistryKeykey=Registry.ClassesRoot.OpenSubKey(@"http......
  • Postgresql,MySQL, SQL Server 的多表连接(join)update 操作
    数据库更新时经常会join其他表做判断更新,PostgreSQL的写法与其他关系型数据库更有不同,下面以SQLServer,MySQL,PostgreSQL的数据库做对比和展示。先造数据源。createtableA(idint,cityvarchar(20));createtableB(idint,namevarchar(20));insertintoAvalues(1......
  • flink源码分析--RPC通信过程分析
    flink的通信框架基于akka,但是不懂akka也关系不大。首先介绍几个概念,大家记住名字和对应的作用:xxxGateway:在flink中就是一个用来告诉调用者,xxx具有哪些方法可以调用的一个接口类。比如JobMasterGateway就是用来告诉所有需要调用JobMaster的用户,我JobMaster类只有比如10个方法,假设......
  • KingbaseES V8R6 几种不同的表复制方式
    前言当数据库遇到未知问题,有时候无法入手分析,在非生产数据库或者征得客户同意获得特殊时间,需要重建表解决,下面提供了多种不同的复制表的方法,我们了解一下他们的差异。测试1、CREATETABLEASSELECT语句用于复制表结构和数据,但是不会复制索引。我们可以使用以下语句基于t1......
  • flink的各个算子在收到barrier的时候会做什么
    在Flink中,各个算子(算子链中的每个算子)在收到barrier(检查点屏障)时会执行以下操作:算子状态快照:算子会触发对其状态的快照操作,以捕获当前状态的一致性快照。这包括算子的运行时状态、缓冲区或累加器等数据。处理挂起输入数据:算子会将收到的barrier后的数据挂起,不再继续处理......
  • flink中一个多输入的算子如何决定是否可以往下游算子发送barrier
    在Flink中,多输入的算子在决定是否可以往下发barrier时需要满足以下条件:输入流的barrier对齐:多输入的算子必须要求所有输入流都处于barrier对齐状态,即收到了相同的barrier。这意味着所有输入流的上游任务都已经收到了相同的barrier,并向下游发送了确认消息。所有输入......
  • flink的状态表需要保存多久
    Flink的状态表保存的时间可以根据应用程序的需求进行配置。状态表的保留时间取决于两个因素:状态后端(StateBackend)的配置:Flink支持不同类型的状态后端,如内存、文件系统、RocksDB等。不同的状态后端可以配置不同的状态保留策略。例如,如果使用基于内存的状态后端,状态表的数据通常......
  • flink从检查点恢复时候做什么
    当发生故障时,Flink从最近的一致性检查点中恢复任务的状态。以下是从检查点恢复的主要步骤:加载检查点元数据和状态数据:Flink首先加载最近一次成功的检查点的元数据和持久化的状态数据。检查点的元数据包含了关于检查点的信息,如检查点ID、生成时间和相关的任务信息等。持久化的状......