Flink Sql Hive维表Join

本文介绍了在Flink 1.11中使用Sql进行Hive表Join的注意事项和限制。内容包括Hive表缓存策略,Flink对Hive表的读取方式,以及如何通过配置`lookup.join.cache.ttl`参数实现缓存刷新。文章探讨了Flink 1.12引入的新特性,如何将Hive表视为bounded stream,以及不同`streaming-source.partition.order`参数对数据读取的影响。此外,还提供了一种避免子查询导致错误的解决方案,并给出了最终的优化SQL语句。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Flink 1.11支持与Hive表的Join,Flink 1.11官方文档如下图所示。

根据官方文档:

1.hive表会缓存到TM内存,所以join的hive表不宜太大。

2.根据lookup.join.cache.ttl 参数,flink会定期刷新hive缓存

而业务需求是Flink 读取kafka 和T+1更新的hive表,对于kafka的数据,只处理type字段在hive表中存在的数据

首先尝试了如下Flink sql:

select a.* from flink_tab  a where a.type in (select type from hive_tab); 

这种sql 可以运行,也会读取hive表,但是从flink web ui 上可以看到,在读取hive表结束后,task就直接finish了。也不会定期刷新hive的数据,所以不符合我们的要求。

Flink 1.12 的文档中给出了标准的写法

其中主要3个参数

'streaming-source.enable' = 'false'
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值