You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user-zh@flink.apache.org by WuKong <wu...@foxmail.com> on 2021/11/11 09:42:11 UTC

FlinkSQL 1.12 Temporal Joins 多表关联问题

Hi :
   现在有个场景, 我有一张Kafka的表,需要基于这张Kafka的流表 进行事件触发,去关联DB的多表 来拉宽数据 。比如: select * from kafkaTableA AS A
   join DBTableB FOR SYSTEM_TIME AS OF A.`PROCTIME` AS B ON valueB = B.columnB  
   join DBTableC FOR SYSTEM_TIME AS OF A.`PROCTIME` AS C  ON valueC = C.columnC 。 
  目前有两个问题:
   1.  我看数据库里 是单表去查询数据的数据的, 
         select * from DBTableB where B.columnB   = valueB 
         select * from DBTableC where C.columnC   = valueC
      这里我可以配置 把整个查询逻辑 下沉到数据库去做吗?
  2. 我想把Kafka 里的数据 积累一点之后 通过微批的形式 IN 查询 请问 有没有可能这么做?



---
Best,
WuKong

Re: Re: FlinkSQL 1.12 Temporal Joins 多表关联问题

Posted by WuKong <wu...@foxmail.com>.
Hi :
   第一个 我了解了Cache 不太适合我的场景,因为我的表都是几十亿量级,同时 我要根据一些关键键 去数据库里查询,所以 我先在Job 中 聚合一些主键,通过In 条件 去查询。
   第二个  好像是我理解的问题,最初想通过Flink Sql 把整体逻辑 下发到数据库去查询,因为有些OLAP 引擎 查询性能是可以接受的



---
Best,
WuKong
 
发件人: Caizhi Weng
发送时间: 2021-11-12 11:32
收件人: flink中文邮件组
主题: Re: FlinkSQL 1.12 Temporal Joins 多表关联问题
Hi!
 
这是说每次主流来一条数据,都要去维表里查询一次吗?然后你想每次攒一批数据,一次性查询以提高性能?
 
如果是的话,一部分维表(如 jdbc 和 hbase)支持 cache 功能 [1]。cache 功能可以在每次 cache 刷新的时候把数据加载到
task manager 内存中,这样主流来数据时只需要从 task manager 内存中查询对应数据即可,不必去外部系统查询。
 
另外查询逻辑下沉到数据库具体指的是什么?能否详细说明一下。
 
[1]
https://nightlies.apache.org/flink/flink-docs-master/zh/docs/connectors/table/jdbc/#lookup-cache
 
WuKong <wu...@foxmail.com> 于2021年11月11日周四 下午5:42写道:
 
> Hi :
>    现在有个场景, 我有一张Kafka的表,需要基于这张Kafka的流表 进行事件触发,去关联DB的多表 来拉宽数据 。比如: select *
> from kafkaTableA AS A
>    join DBTableB FOR SYSTEM_TIME AS OF A.`PROCTIME` AS B ON valueB =
> B.columnB
>    join DBTableC FOR SYSTEM_TIME AS OF A.`PROCTIME` AS C  ON valueC =
> C.columnC 。
>   目前有两个问题:
>    1.  我看数据库里 是单表去查询数据的数据的,
>          select * from DBTableB where B.columnB   = valueB
>          select * from DBTableC where C.columnC   = valueC
>       这里我可以配置 把整个查询逻辑 下沉到数据库去做吗?
>   2. 我想把Kafka 里的数据 积累一点之后 通过微批的形式 IN 查询 请问 有没有可能这么做?
>
>
>
> ---
> Best,
> WuKong
>

Re: FlinkSQL 1.12 Temporal Joins 多表关联问题

Posted by Caizhi Weng <ts...@gmail.com>.
Hi!

这是说每次主流来一条数据,都要去维表里查询一次吗?然后你想每次攒一批数据,一次性查询以提高性能?

如果是的话,一部分维表(如 jdbc 和 hbase)支持 cache 功能 [1]。cache 功能可以在每次 cache 刷新的时候把数据加载到
task manager 内存中,这样主流来数据时只需要从 task manager 内存中查询对应数据即可,不必去外部系统查询。

另外查询逻辑下沉到数据库具体指的是什么?能否详细说明一下。

[1]
https://nightlies.apache.org/flink/flink-docs-master/zh/docs/connectors/table/jdbc/#lookup-cache

WuKong <wu...@foxmail.com> 于2021年11月11日周四 下午5:42写道:

> Hi :
>    现在有个场景, 我有一张Kafka的表,需要基于这张Kafka的流表 进行事件触发,去关联DB的多表 来拉宽数据 。比如: select *
> from kafkaTableA AS A
>    join DBTableB FOR SYSTEM_TIME AS OF A.`PROCTIME` AS B ON valueB =
> B.columnB
>    join DBTableC FOR SYSTEM_TIME AS OF A.`PROCTIME` AS C  ON valueC =
> C.columnC 。
>   目前有两个问题:
>    1.  我看数据库里 是单表去查询数据的数据的,
>          select * from DBTableB where B.columnB   = valueB
>          select * from DBTableC where C.columnC   = valueC
>       这里我可以配置 把整个查询逻辑 下沉到数据库去做吗?
>   2. 我想把Kafka 里的数据 积累一点之后 通过微批的形式 IN 查询 请问 有没有可能这么做?
>
>
>
> ---
> Best,
> WuKong
>