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应该怎么写合适呢?