flink sql string char 不兼容?

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

flink sql string char 不兼容?

王双利
下面的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应该怎么写合适呢?
Reply | Threaded
Open this post in threaded view
|

Re: flink sql string char 不兼容?

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

Reply | Threaded
Open this post in threaded view
|

Re: flink sql string char 不兼容?

Benchao Li
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]
Reply | Threaded
Open this post in threaded view
|

回复: Re: flink sql string char 不兼容?

王双利
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应该怎么写合适呢?
Reply | Threaded
Open this post in threaded view
|

Re: flink sql string char 不兼容?

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

Reply | Threaded
Open this post in threaded view
|

Re: flink sql string char 不兼容?

Jingsong Li
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
Reply | Threaded
Open this post in threaded view
|

Re: flink sql string char 不兼容?

Leonard Xu
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

Reply | Threaded
Open this post in threaded view
|

回复: Re: flink sql string char 不兼容?

王双利
  我这边用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
Reply | Threaded
Open this post in threaded view
|

spark代码直接运行至Flink平台

hsdcloud@163.com
In reply to this post by Leonard Xu
  Hi,
      有个脑洞大开的想法,有没有可能出一个模块功能,可以将用户写的spark代码直接运行在Flink平台
Reply | Threaded
Open this post in threaded view
|

Re: spark代码直接运行至Flink平台

Jeff Zhang
啥目的 ?

[hidden email] <[hidden email]> 于2020年4月22日周三 上午9:49写道:

>   Hi,
>       有个脑洞大开的想法,有没有可能出一个模块功能,可以将用户写的spark代码直接运行在Flink平台



--
Best Regards

Jeff Zhang
Reply | Threaded
Open this post in threaded view
|

Re: Re: spark代码直接运行至Flink平台

hsdcloud@163.com
降低用户迁移学习成本,两个框架有类似的地方,不知道比喻是否恰当,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
Reply | Threaded
Open this post in threaded view
|

Re: Re: spark代码直接运行至Flink平台

lec ssmi
那还不如直接用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
>
Reply | Threaded
Open this post in threaded view
|

Re: Re: spark代码直接运行至Flink平台

hsdcloud@163.com
看了下好像 Apache Beam 就是干这个事情的,学习啦 



 
发件人: [hidden email]
发送时间: 2020-04-22 13:37
收件人: [hidden email]
主题: Re: Re: spark代码直接运行至Flink平台
那还不如直接用apache beam直接将这些框架的API全部统一起来。
 
[hidden email] <[hidden email]> 于2020年4月22日周三 上午11:27写道:
 
> 降低用户迁移学习成本,两个框架有类似的地方,不知道比喻是否恰当,Flink平台 是否可以类似虚拟机,上层的流批应用如java,
> spark就像Scala一样
>
>
>
>
>
> 发件人: 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
>