下面的sql 执行的时候报 下面的错误CREATE TABLE target (
jnlno VARCHAR, -- taskid char(9), -- hit char(4) taskid VARCHAR, hit VARCHAR ) insert into target select a.jnlno,'111111qeq','false' from loginevent a Exception in thread "main" org.apache.flink.table.api.ValidationException: Type STRING of table field 'hit' does not match with the physical type CHAR(4) of the 'EXPR$2' field of the TableSink consumed type. Flink 版本 1.10 怎么解决呢?Flink sql的 string char 不兼容? sql应该怎么写合适呢? |
Hi
Sink 对应的字段(taskid\hit)需要声明成varchar, 现在不支持varchar类型写入char(n) 祝好, Leonard Xu > 在 2020年4月21日,18:20,王双利 <[hidden email]> 写道: > > 下面的sql 执行的时候报 下面的错误CREATE TABLE target ( > jnlno VARCHAR, > -- taskid char(9), > -- hit char(4) > taskid VARCHAR, > hit VARCHAR > ) > insert into target select a.jnlno,'111111qeq','false' from loginevent a > > Exception in thread "main" org.apache.flink.table.api.ValidationException: Type STRING of table field 'hit' does not match with the physical type CHAR(4) of the 'EXPR$2' field of the TableSink consumed type. > > Flink 版本 1.10 > 怎么解决呢?Flink sql的 string char 不兼容? > sql应该怎么写合适呢? |
In reply to this post by 王双利
写成varchar应该就可以了。
王双利 <[hidden email]> 于2020年4月21日周二 下午6:21写道: > 下面的sql 执行的时候报 下面的错误CREATE TABLE target ( > jnlno VARCHAR, > -- taskid char(9), > -- hit char(4) > taskid VARCHAR, > hit VARCHAR > ) > insert into target select a.jnlno,'111111qeq','false' from loginevent a > > Exception in thread "main" org.apache.flink.table.api.ValidationException: > Type STRING of table field 'hit' does not match with the physical type > CHAR(4) of the 'EXPR$2' field of the TableSink consumed type. > > Flink 版本 1.10 > 怎么解决呢?Flink sql的 string char 不兼容? > sql应该怎么写合适呢? > -- Benchao Li School of Electronics Engineering and Computer Science, Peking University Tel:+86-15650713730 Email: [hidden email]; [hidden email] |
In reply to this post by Leonard Xu
hit声明的是varchar,现在是,'false' 编译的时候认为是char(4) ,导致类型不匹配
王双利 发件人: Leonard Xu 发送时间: 2020-04-21 18:29 收件人: user-zh 主题: Re: flink sql string char 不兼容? Hi Sink 对应的字段(taskid\hit)需要声明成varchar, 现在不支持varchar类型写入char(n) 祝好, Leonard Xu > 在 2020年4月21日,18:20,王双利 <[hidden email]> 写道: > > 下面的sql 执行的时候报 下面的错误CREATE TABLE target ( > jnlno VARCHAR, > -- taskid char(9), > -- hit char(4) > taskid VARCHAR, > hit VARCHAR > ) > insert into target select a.jnlno,'111111qeq','false' from loginevent a > > Exception in thread "main" org.apache.flink.table.api.ValidationException: Type STRING of table field 'hit' does not match with the physical type CHAR(4) of the 'EXPR$2' field of the TableSink consumed type. > > Flink 版本 1.10 > 怎么解决呢?Flink sql的 string char 不兼容? > sql应该怎么写合适呢? |
Hi
CHAR(n) 、VARCHAR 在SQL语义里是不同的类型,SQL里写的 ‘false’ 常量会解析到CHAR(n) 因为常量长度已经确定会选择使用CHAR(n), 目前是Flink还不支持CHAR(n) 和 VARCHAR 类型之间的隐式转换,所以类型检查会报错,你可以先用CAST(‘false’ as VARCHAR)后处理。 祝好 Leonard > 在 2020年4月21日,18:32,王双利 <[hidden email]> 写道: > > hit声明的是varchar,现在是,'false' 编译的时候认为是char(4) ,导致类型不匹配 > > > > 王双利 > > 发件人: Leonard Xu > 发送时间: 2020-04-21 18:29 > 收件人: user-zh > 主题: Re: flink sql string char 不兼容? > Hi > Sink 对应的字段(taskid\hit)需要声明成varchar, 现在不支持varchar类型写入char(n) > > 祝好, > Leonard Xu > >> 在 2020年4月21日,18:20,王双利 <[hidden email]> 写道: >> >> 下面的sql 执行的时候报 下面的错误CREATE TABLE target ( >> jnlno VARCHAR, >> -- taskid char(9), >> -- hit char(4) >> taskid VARCHAR, >> hit VARCHAR >> ) >> insert into target select a.jnlno,'111111qeq','false' from loginevent a >> >> Exception in thread "main" org.apache.flink.table.api.ValidationException: Type STRING of table field 'hit' does not match with the physical type CHAR(4) of the 'EXPR$2' field of the TableSink consumed type. >> >> Flink 版本 1.10 >> 怎么解决呢?Flink sql的 string char 不兼容? >> sql应该怎么写合适呢? |
Hi,
- 首先1.10中把char Insert到varchar中是支持的,可以再check下哪里有没有问题吗? - 'false'应该是char(5)而不是char(4) Best, Jingsong Lee On Tue, Apr 21, 2020 at 9:01 PM Leonard Xu <[hidden email]> wrote: > Hi > > CHAR(n) 、VARCHAR 在SQL语义里是不同的类型,SQL里写的 ‘false’ 常量会解析到CHAR(n) > 因为常量长度已经确定会选择使用CHAR(n), > 目前是Flink还不支持CHAR(n) 和 VARCHAR 类型之间的隐式转换,所以类型检查会报错,你可以先用CAST(‘false’ as > VARCHAR)后处理。 > > 祝好 > Leonard > > > 在 2020年4月21日,18:32,王双利 <[hidden email]> 写道: > > > > hit声明的是varchar,现在是,'false' 编译的时候认为是char(4) ,导致类型不匹配 > > > > > > > > 王双利 > > > > 发件人: Leonard Xu > > 发送时间: 2020-04-21 18:29 > > 收件人: user-zh > > 主题: Re: flink sql string char 不兼容? > > Hi > > Sink 对应的字段(taskid\hit)需要声明成varchar, 现在不支持varchar类型写入char(n) > > > > 祝好, > > Leonard Xu > > > >> 在 2020年4月21日,18:20,王双利 <[hidden email]> 写道: > >> > >> 下面的sql 执行的时候报 下面的错误CREATE TABLE target ( > >> jnlno VARCHAR, > >> -- taskid char(9), > >> -- hit char(4) > >> taskid VARCHAR, > >> hit VARCHAR > >> ) > >> insert into target select a.jnlno,'111111qeq','false' from loginevent > a > >> > >> Exception in thread "main" > org.apache.flink.table.api.ValidationException: Type STRING of table field > 'hit' does not match with the physical type CHAR(4) of the 'EXPR$2' field > of the TableSink consumed type. > >> > >> Flink 版本 1.10 > >> 怎么解决呢?Flink sql的 string char 不兼容? > >> sql应该怎么写合适呢? > > -- Best, Jingsong Lee |
Hi, 王双利
我试了下1.10.0的版本,没能复现你的异常, 如Jingsong Lees所说的char(n)到varchar已经支持了, 你能完整的贴下loginevent 的 sql吗?我再看看 祝好 Leonard Xu > 在 2020年4月21日,22:22,Jingsong Li <[hidden email]> 写道: > > Hi, > > - 首先1.10中把char Insert到varchar中是支持的,可以再check下哪里有没有问题吗? > - 'false'应该是char(5)而不是char(4) > > Best, > Jingsong Lee > > On Tue, Apr 21, 2020 at 9:01 PM Leonard Xu <[hidden email]> wrote: > >> Hi >> >> CHAR(n) 、VARCHAR 在SQL语义里是不同的类型,SQL里写的 ‘false’ 常量会解析到CHAR(n) >> 因为常量长度已经确定会选择使用CHAR(n), >> 目前是Flink还不支持CHAR(n) 和 VARCHAR 类型之间的隐式转换,所以类型检查会报错,你可以先用CAST(‘false’ as >> VARCHAR)后处理。 >> >> 祝好 >> Leonard >> >>> 在 2020年4月21日,18:32,王双利 <[hidden email]> 写道: >>> >>> hit声明的是varchar,现在是,'false' 编译的时候认为是char(4) ,导致类型不匹配 >>> >>> >>> >>> 王双利 >>> >>> 发件人: Leonard Xu >>> 发送时间: 2020-04-21 18:29 >>> 收件人: user-zh >>> 主题: Re: flink sql string char 不兼容? >>> Hi >>> Sink 对应的字段(taskid\hit)需要声明成varchar, 现在不支持varchar类型写入char(n) >>> >>> 祝好, >>> Leonard Xu >>> >>>> 在 2020年4月21日,18:20,王双利 <[hidden email]> 写道: >>>> >>>> 下面的sql 执行的时候报 下面的错误CREATE TABLE target ( >>>> jnlno VARCHAR, >>>> -- taskid char(9), >>>> -- hit char(4) >>>> taskid VARCHAR, >>>> hit VARCHAR >>>> ) >>>> insert into target select a.jnlno,'111111qeq','false' from loginevent >> a >>>> >>>> Exception in thread "main" >> org.apache.flink.table.api.ValidationException: Type STRING of table field >> 'hit' does not match with the physical type CHAR(4) of the 'EXPR$2' field >> of the TableSink consumed type. >>>> >>>> Flink 版本 1.10 >>>> 怎么解决呢?Flink sql的 string char 不兼容? >>>> sql应该怎么写合适呢? >> >> > > -- > Best, Jingsong Lee |
我这边用kafka的AppendStream没什么问题,
改的是支持Retract模式的,KafkaTableSinkBase继承的是RetractStreamTableSink 基本是按照下面的链接的地址改的 https://www.cnblogs.com/Springmoon-venn/p/12652845.html 王双利 发件人: Leonard Xu 发送时间: 2020-04-22 09:03 收件人: user-zh 主题: Re: flink sql string char 不兼容? Hi, 王双利 我试了下1.10.0的版本,没能复现你的异常, 如Jingsong Lees所说的char(n)到varchar已经支持了, 你能完整的贴下loginevent 的 sql吗?我再看看 祝好 Leonard Xu > 在 2020年4月21日,22:22,Jingsong Li <[hidden email]> 写道: > > Hi, > > - 首先1.10中把char Insert到varchar中是支持的,可以再check下哪里有没有问题吗? > - 'false'应该是char(5)而不是char(4) > > Best, > Jingsong Lee > > On Tue, Apr 21, 2020 at 9:01 PM Leonard Xu <[hidden email]> wrote: > >> Hi >> >> CHAR(n) 、VARCHAR 在SQL语义里是不同的类型,SQL里写的 ‘false’ 常量会解析到CHAR(n) >> 因为常量长度已经确定会选择使用CHAR(n), >> 目前是Flink还不支持CHAR(n) 和 VARCHAR 类型之间的隐式转换,所以类型检查会报错,你可以先用CAST(‘false’ as >> VARCHAR)后处理。 >> >> 祝好 >> Leonard >> >>> 在 2020年4月21日,18:32,王双利 <[hidden email]> 写道: >>> >>> hit声明的是varchar,现在是,'false' 编译的时候认为是char(4) ,导致类型不匹配 >>> >>> >>> >>> 王双利 >>> >>> 发件人: Leonard Xu >>> 发送时间: 2020-04-21 18:29 >>> 收件人: user-zh >>> 主题: Re: flink sql string char 不兼容? >>> Hi >>> Sink 对应的字段(taskid\hit)需要声明成varchar, 现在不支持varchar类型写入char(n) >>> >>> 祝好, >>> Leonard Xu >>> >>>> 在 2020年4月21日,18:20,王双利 <[hidden email]> 写道: >>>> >>>> 下面的sql 执行的时候报 下面的错误CREATE TABLE target ( >>>> jnlno VARCHAR, >>>> -- taskid char(9), >>>> -- hit char(4) >>>> taskid VARCHAR, >>>> hit VARCHAR >>>> ) >>>> insert into target select a.jnlno,'111111qeq','false' from loginevent >> a >>>> >>>> Exception in thread "main" >> org.apache.flink.table.api.ValidationException: Type STRING of table field >> 'hit' does not match with the physical type CHAR(4) of the 'EXPR$2' field >> of the TableSink consumed type. >>>> >>>> Flink 版本 1.10 >>>> 怎么解决呢?Flink sql的 string char 不兼容? >>>> sql应该怎么写合适呢? >> >> > > -- > Best, Jingsong Lee |
In reply to this post by Leonard Xu
Hi,
有个脑洞大开的想法,有没有可能出一个模块功能,可以将用户写的spark代码直接运行在Flink平台 |
啥目的 ?
[hidden email] <[hidden email]> 于2020年4月22日周三 上午9:49写道: > Hi, > 有个脑洞大开的想法,有没有可能出一个模块功能,可以将用户写的spark代码直接运行在Flink平台 -- Best Regards Jeff Zhang |
降低用户迁移学习成本,两个框架有类似的地方,不知道比喻是否恰当,Flink平台 是否可以类似虚拟机,上层的流批应用如java, spark就像Scala一样
[hidden email] 发件人: Jeff Zhang 发送时间: 2020-04-22 10:52 收件人: user-zh 主题: Re: spark代码直接运行至Flink平台 啥目的 ? [hidden email] <[hidden email]> 于2020年4月22日周三 上午9:49写道: > Hi, > 有个脑洞大开的想法,有没有可能出一个模块功能,可以将用户写的spark代码直接运行在Flink平台 -- Best Regards Jeff Zhang |
那还不如直接用apache beam直接将这些框架的API全部统一起来。
[hidden email] <[hidden email]> 于2020年4月22日周三 上午11:27写道: > 降低用户迁移学习成本,两个框架有类似的地方,不知道比喻是否恰当,Flink平台 是否可以类似虚拟机,上层的流批应用如java, > spark就像Scala一样 > > > > > [hidden email] > > 发件人: Jeff Zhang > 发送时间: 2020-04-22 10:52 > 收件人: user-zh > 主题: Re: spark代码直接运行至Flink平台 > 啥目的 ? > > [hidden email] <[hidden email]> 于2020年4月22日周三 上午9:49写道: > > > Hi, > > 有个脑洞大开的想法,有没有可能出一个模块功能,可以将用户写的spark代码直接运行在Flink平台 > > > > -- > Best Regards > > Jeff Zhang > |
看了下好像 Apache Beam 就是干这个事情的,学习啦
|
Free forum by Nabble | Edit this page |