hi~ 如图所示,在做kafka和jdbc join的时候,jdbc数据全量加载并为Finished状态,这种情况下请问怎么感知jdbc表的数据更新呢?还是我哪里的配置不对,还请赐教 小白敬上~
|
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] |
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] |
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] |
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] |
Free forum by Nabble | Edit this page |