SQL层应用维表join jdbc的时候,请问怎么动态感知维表数据的变化呢?

classic Classic list List threaded Threaded
5 messages Options
Reply | Threaded
Open this post in threaded view
|

SQL层应用维表join jdbc的时候,请问怎么动态感知维表数据的变化呢?

amenhub@163.com
hi~
如图所示,在做kafka和jdbc join的时候,jdbc数据全量加载并为Finished状态,这种情况下请问怎么感知jdbc表的数据更新呢?还是我哪里的配置不对,还请赐教

小白敬上~


 

Reply | Threaded
Open this post in threaded view
|

Re: SQL层应用维表join jdbc的时候,请问怎么动态感知维表数据的变化呢?

Benchao Li
hi 世民,

邮件列表里不支持直接发送图片,你可以用一些图床工具来发送图片。
根据你的描述,我猜测你应该是join维表的语法写的不对,写成了普通的join的方式。这种情况下,会把jdbc的表解析成`JDBCInputFormat`,一次性读取全部数据。
维表join的SQL写法如下所示:

SELECT
  o.amout, o.currency, r.rate, o.amount * r.rateFROM
  Orders AS o*  JOIN LatestRates FOR SYSTEM_TIME AS OF o.proctime AS r
*  ON r.currency = o.currency

详细内容可以参考文档:
https://ci.apache.org/projects/flink/flink-docs-release-1.9/dev/table/sql.html#joins

刘世民 <[hidden email]> 于2020年1月4日周六 上午11:27写道:

> hi~
> 如图所示,在做kafka和jdbc
> join的时候,jdbc数据全量加载并为Finished状态,这种情况下请问怎么感知jdbc表的数据更新呢?还是我哪里的配置不对,还请赐教
>
> 小白敬上~
>
>
>
>


--

Benchao Li
School of Electronics Engineering and Computer Science, Peking University
Tel:+86-15650713730
Email: [hidden email]; [hidden email]
Reply | Threaded
Open this post in threaded view
|

Re:Re: SQL层应用维表join jdbc的时候,请问怎么动态感知维表数据的变化呢?

amenhub@163.com


hi Benchao,


我明白你的意思,我认真在看官方文档学习flink相关知识,知道目前temporal table join只支持processing-time,
但是当我使用给出的join sql例子写法时,报出这个异常,[  Column 'proctime' not found in table 'o' ],这个问题是传统的通过别名 [ o ]去找 [ o ]表中的proctime列,但是显然表中是没有proctime列的,
请问我该怎么解决这个问题呢?我应该去了解熟悉哪方面的知识?Mysql支持ANSI-2011标准的Temporal table语义吧,请赐教~


祝好






在 2020-01-04 12:10:34,"Benchao Li" <[hidden email]> 写道:

>hi 世民,
>
>邮件列表里不支持直接发送图片,你可以用一些图床工具来发送图片。
>根据你的描述,我猜测你应该是join维表的语法写的不对,写成了普通的join的方式。这种情况下,会把jdbc的表解析成`JDBCInputFormat`,一次性读取全部数据。
>维表join的SQL写法如下所示:
>
>SELECT
>  o.amout, o.currency, r.rate, o.amount * r.rateFROM
>  Orders AS o*  JOIN LatestRates FOR SYSTEM_TIME AS OF o.proctime AS r
>*  ON r.currency = o.currency
>
>详细内容可以参考文档:
>https://ci.apache.org/projects/flink/flink-docs-release-1.9/dev/table/sql.html#joins
>
>刘世民 <[hidden email]> 于2020年1月4日周六 上午11:27写道:
>
>> hi~
>> 如图所示,在做kafka和jdbc
>> join的时候,jdbc数据全量加载并为Finished状态,这种情况下请问怎么感知jdbc表的数据更新呢?还是我哪里的配置不对,还请赐教
>>
>> 小白敬上~
>>
>>
>>
>>
>
>
>--
>
>Benchao Li
>School of Electronics Engineering and Computer Science, Peking University
>Tel:+86-15650713730
>Email: [hidden email]; [hidden email]
Reply | Threaded
Open this post in threaded view
|

Re: Re: SQL层应用维表join jdbc的时候,请问怎么动态感知维表数据的变化呢?

Benchao Li
hi 世民,

这个错误的意思是你的stream table里面需要有一个处理时间字段,目前为止我大概了解的有这么几种方法可以产生:
1. 如果是从DataStream注册为Table的话,可以用:
https://ci.apache.org/projects/flink/flink-docs-release-1.9/dev/table/streaming/time_attributes.html#during-datastream-to-table-conversion
2. 如果是用TableSource注册的Table的话,可以用:
https://ci.apache.org/projects/flink/flink-docs-release-1.9/dev/table/streaming/time_attributes.html#using-a-tablesource
3. 即将发布的1.10里面支持计算列,可以通过DDL直接声明一个处理时间字段:
https://ci.apache.org/projects/flink/flink-docs-master/dev/table/sql/create.html

此外,维表join的场景对mysql没有要求要支持Temporal Table,这个是Flink
SQL负责解析处理的,最终请求mysql的是一个普通的select语句。

amenhub <[hidden email]> 于2020年1月4日周六 下午1:55写道:

>
>
> hi Benchao,
>
>
> 我明白你的意思,我认真在看官方文档学习flink相关知识,知道目前temporal table join只支持processing-time,
> 但是当我使用给出的join sql例子写法时,报出这个异常,[  Column 'proctime' not found in table 'o'
> ],这个问题是传统的通过别名 [ o ]去找 [ o ]表中的proctime列,但是显然表中是没有proctime列的,
> 请问我该怎么解决这个问题呢?我应该去了解熟悉哪方面的知识?Mysql支持ANSI-2011标准的Temporal table语义吧,请赐教~
>
>
> 祝好
>
>
>
>
>
>
> 在 2020-01-04 12:10:34,"Benchao Li" <[hidden email]> 写道:
> >hi 世民,
> >
> >邮件列表里不支持直接发送图片,你可以用一些图床工具来发送图片。
>
> >根据你的描述,我猜测你应该是join维表的语法写的不对,写成了普通的join的方式。这种情况下,会把jdbc的表解析成`JDBCInputFormat`,一次性读取全部数据。
> >维表join的SQL写法如下所示:
> >
> >SELECT
> >  o.amout, o.currency, r.rate, o.amount * r.rateFROM
> >  Orders AS o*  JOIN LatestRates FOR SYSTEM_TIME AS OF o.proctime AS r
> >*  ON r.currency = o.currency
> >
> >详细内容可以参考文档:
> >
> https://ci.apache.org/projects/flink/flink-docs-release-1.9/dev/table/sql.html#joins
> >
> >刘世民 <[hidden email]> 于2020年1月4日周六 上午11:27写道:
> >
> >> hi~
> >> 如图所示,在做kafka和jdbc
> >> join的时候,jdbc数据全量加载并为Finished状态,这种情况下请问怎么感知jdbc表的数据更新呢?还是我哪里的配置不对,还请赐教
> >>
> >> 小白敬上~
> >>
> >>
> >>
> >>
> >
> >
> >--
> >
> >Benchao Li
> >School of Electronics Engineering and Computer Science, Peking University
> >Tel:+86-15650713730
> >Email: [hidden email]; [hidden email]
>


--

Benchao Li
School of Electronics Engineering and Computer Science, Peking University
Tel:+86-15650713730
Email: [hidden email]; [hidden email]
Reply | Threaded
Open this post in threaded view
|

Re:Re: Re: SQL层应用维表join jdbc的时候,请问怎么动态感知维表数据的变化呢?

amenhub@163.com
hi BenChao,


正是您所说的计算列特性,期待1.10版本的正式发布!非常感谢!


祝好!







在 2020-01-04 15:35:24,"Benchao Li" <[hidden email]> 写道:

>hi 世民,
>
>这个错误的意思是你的stream table里面需要有一个处理时间字段,目前为止我大概了解的有这么几种方法可以产生:
>1. 如果是从DataStream注册为Table的话,可以用:
>https://ci.apache.org/projects/flink/flink-docs-release-1.9/dev/table/streaming/time_attributes.html#during-datastream-to-table-conversion
>2. 如果是用TableSource注册的Table的话,可以用:
>https://ci.apache.org/projects/flink/flink-docs-release-1.9/dev/table/streaming/time_attributes.html#using-a-tablesource
>3. 即将发布的1.10里面支持计算列,可以通过DDL直接声明一个处理时间字段:
>https://ci.apache.org/projects/flink/flink-docs-master/dev/table/sql/create.html
>
>此外,维表join的场景对mysql没有要求要支持Temporal Table,这个是Flink
>SQL负责解析处理的,最终请求mysql的是一个普通的select语句。
>
>amenhub <[hidden email]> 于2020年1月4日周六 下午1:55写道:
>
>>
>>
>> hi Benchao,
>>
>>
>> 我明白你的意思,我认真在看官方文档学习flink相关知识,知道目前temporal table join只支持processing-time,
>> 但是当我使用给出的join sql例子写法时,报出这个异常,[  Column 'proctime' not found in table 'o'
>> ],这个问题是传统的通过别名 [ o ]去找 [ o ]表中的proctime列,但是显然表中是没有proctime列的,
>> 请问我该怎么解决这个问题呢?我应该去了解熟悉哪方面的知识?Mysql支持ANSI-2011标准的Temporal table语义吧,请赐教~
>>
>>
>> 祝好
>>
>>
>>
>>
>>
>>
>> 在 2020-01-04 12:10:34,"Benchao Li" <[hidden email]> 写道:
>> >hi 世民,
>> >
>> >邮件列表里不支持直接发送图片,你可以用一些图床工具来发送图片。
>>
>> >根据你的描述,我猜测你应该是join维表的语法写的不对,写成了普通的join的方式。这种情况下,会把jdbc的表解析成`JDBCInputFormat`,一次性读取全部数据。
>> >维表join的SQL写法如下所示:
>> >
>> >SELECT
>> >  o.amout, o.currency, r.rate, o.amount * r.rateFROM
>> >  Orders AS o*  JOIN LatestRates FOR SYSTEM_TIME AS OF o.proctime AS r
>> >*  ON r.currency = o.currency
>> >
>> >详细内容可以参考文档:
>> >
>> https://ci.apache.org/projects/flink/flink-docs-release-1.9/dev/table/sql.html#joins
>> >
>> >刘世民 <[hidden email]> 于2020年1月4日周六 上午11:27写道:
>> >
>> >> hi~
>> >> 如图所示,在做kafka和jdbc
>> >> join的时候,jdbc数据全量加载并为Finished状态,这种情况下请问怎么感知jdbc表的数据更新呢?还是我哪里的配置不对,还请赐教
>> >>
>> >> 小白敬上~
>> >>
>> >>
>> >>
>> >>
>> >
>> >
>> >--
>> >
>> >Benchao Li
>> >School of Electronics Engineering and Computer Science, Peking University
>> >Tel:+86-15650713730
>> >Email: [hidden email]; [hidden email]
>>
>
>
>--
>
>Benchao Li
>School of Electronics Engineering and Computer Science, Peking University
>Tel:+86-15650713730
>Email: [hidden email]; [hidden email]