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 王双利 <al...@163.com> on 2020/04/21 10:32:30 UTC
回复: Re: flink sql string char 不兼容?
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,王双利 <al...@163.com> 写道:
>
> 下面的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应该怎么写合适呢?
Re: Re: spark代码直接运行至Flink平台
Posted by "hsdcloud@163.com" <hs...@163.com>.
看了下好像 Apache Beam 就是干这个事情的,学习啦
hsdcloud@163.com
发件人: lec ssmi
发送时间: 2020-04-22 13:37
收件人: flink-user-cn
主题: Re: Re: spark代码直接运行至Flink平台
那还不如直接用apache beam直接将这些框架的API全部统一起来。
hsdcloud@163.com <hs...@163.com> 于2020年4月22日周三 上午11:27写道:
> 降低用户迁移学习成本,两个框架有类似的地方,不知道比喻是否恰当,Flink平台 是否可以类似虚拟机,上层的流批应用如java,
> spark就像Scala一样
>
>
>
>
> hsdcloud@163.com
>
> 发件人: Jeff Zhang
> 发送时间: 2020-04-22 10:52
> 收件人: user-zh
> 主题: Re: spark代码直接运行至Flink平台
> 啥目的 ?
>
> hsdcloud@163.com <hs...@163.com> 于2020年4月22日周三 上午9:49写道:
>
> > Hi,
> > 有个脑洞大开的想法,有没有可能出一个模块功能,可以将用户写的spark代码直接运行在Flink平台
>
>
>
> --
> Best Regards
>
> Jeff Zhang
>
Re: Re: spark代码直接运行至Flink平台
Posted by lec ssmi <sh...@gmail.com>.
那还不如直接用apache beam直接将这些框架的API全部统一起来。
hsdcloud@163.com <hs...@163.com> 于2020年4月22日周三 上午11:27写道:
> 降低用户迁移学习成本,两个框架有类似的地方,不知道比喻是否恰当,Flink平台 是否可以类似虚拟机,上层的流批应用如java,
> spark就像Scala一样
>
>
>
>
> hsdcloud@163.com
>
> 发件人: Jeff Zhang
> 发送时间: 2020-04-22 10:52
> 收件人: user-zh
> 主题: Re: spark代码直接运行至Flink平台
> 啥目的 ?
>
> hsdcloud@163.com <hs...@163.com> 于2020年4月22日周三 上午9:49写道:
>
> > Hi,
> > 有个脑洞大开的想法,有没有可能出一个模块功能,可以将用户写的spark代码直接运行在Flink平台
>
>
>
> --
> Best Regards
>
> Jeff Zhang
>
Re: Re: spark代码直接运行至Flink平台
Posted by "hsdcloud@163.com" <hs...@163.com>.
降低用户迁移学习成本,两个框架有类似的地方,不知道比喻是否恰当,Flink平台 是否可以类似虚拟机,上层的流批应用如java, spark就像Scala一样
hsdcloud@163.com
发件人: Jeff Zhang
发送时间: 2020-04-22 10:52
收件人: user-zh
主题: Re: spark代码直接运行至Flink平台
啥目的 ?
hsdcloud@163.com <hs...@163.com> 于2020年4月22日周三 上午9:49写道:
> Hi,
> 有个脑洞大开的想法,有没有可能出一个模块功能,可以将用户写的spark代码直接运行在Flink平台
--
Best Regards
Jeff Zhang
Re: spark代码直接运行至Flink平台
Posted by Jeff Zhang <zj...@gmail.com>.
啥目的 ?
hsdcloud@163.com <hs...@163.com> 于2020年4月22日周三 上午9:49写道:
> Hi,
> 有个脑洞大开的想法,有没有可能出一个模块功能,可以将用户写的spark代码直接运行在Flink平台
--
Best Regards
Jeff Zhang
spark代码直接运行至Flink平台
Posted by "hsdcloud@163.com" <hs...@163.com>.
Hi,
有个脑洞大开的想法,有没有可能出一个模块功能,可以将用户写的spark代码直接运行在Flink平台
回复: Re: flink sql string char 不兼容?
Posted by 王双利 <al...@163.com>.
我这边用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 <ji...@gmail.com> 写道:
>
> 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 <xb...@gmail.com> 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,王双利 <al...@163.com> 写道:
>>>
>>> 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,王双利 <al...@163.com> 写道:
>>>>
>>>> 下面的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
Re: flink sql string char 不兼容?
Posted by Leonard Xu <xb...@gmail.com>.
Hi, 王双利
我试了下1.10.0的版本,没能复现你的异常, 如Jingsong Lees所说的char(n)到varchar已经支持了,
你能完整的贴下loginevent 的 sql吗?我再看看
祝好
Leonard Xu
> 在 2020年4月21日,22:22,Jingsong Li <ji...@gmail.com> 写道:
>
> 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 <xb...@gmail.com> 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,王双利 <al...@163.com> 写道:
>>>
>>> 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,王双利 <al...@163.com> 写道:
>>>>
>>>> 下面的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
Re: flink sql string char 不兼容?
Posted by Jingsong Li <ji...@gmail.com>.
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 <xb...@gmail.com> 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,王双利 <al...@163.com> 写道:
> >
> > 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,王双利 <al...@163.com> 写道:
> >>
> >> 下面的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
Re: flink sql string char 不兼容?
Posted by Leonard Xu <xb...@gmail.com>.
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,王双利 <al...@163.com> 写道:
>
> 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,王双利 <al...@163.com> 写道:
>>
>> 下面的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应该怎么写合适呢?