Table api son schema

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

Table api son schema

Zhao,Yi(SEC)

 

 

如上图,field api被标注过期。替换写法被注释掉,使用注视掉的写法会报错如下。

 

Exception in thread "main" org.apache.flink.table.api.TableException: A raw type backed by type information has no serializable string representation. It needs to be resolved into a proper raw type.

       at org.apache.flink.table.types.logical.TypeInformationRawType.asSerializableString(TypeInformationRawType.java:97)

       at org.apache.flink.table.descriptors.Schema.field(Schema.java:88)

       at jobs.IpGapUserFt2.main(IpGapUserFt2.java:83)

 

不清楚有啥解决方法吗?

 

 

其次,我这边鼓捣了半天,发现使用json schema貌似也没办法实现整个表的动态结构。

我业务中json实际如下:

{

“d”:{

  “key”: value

    …. … .  .. ..// 此处key动态扩展

}

}

我大概想法是d作为一个field,类型是map(但好像不支持map?必须用row)。用row呢,又必须指定其所有field,就不是动态扩展字段了。

Reply | Threaded
Open this post in threaded view
|

Re: Table api son schema

Danny Chan
Flink 1.11 支持 RAW 作为 sql 类型,基于此,你可以自己扩展 SE/DE 的逻辑实现部分动态解析[1]

[1] https://ci.apache.org/projects/flink/flink-docs-release-1.11/dev/table/types.html#raw

Best,
Danny Chan
在 2020年8月11日 +0800 PM3:40,Zhao,Yi(SEC) <[hidden email]>,写道:

> <>
>
>
> 如上图,field api被标注过期。替换写法被注释掉,使用注视掉的写法会报错如下。
>
> Exception in thread "main" org.apache.flink.table.api.TableException: A raw type backed by type information has no serializable string representation. It needs to be resolved into a proper raw type.
>        at org.apache.flink.table.types.logical.TypeInformationRawType.asSerializableString(TypeInformationRawType.java:97)
>        at org.apache.flink.table.descriptors.Schema.field(Schema.java:88)
>        at jobs.IpGapUserFt2.main(IpGapUserFt2.java:83)
>
> 不清楚有啥解决方法吗?
>
>
> 其次,我这边鼓捣了半天,发现使用json schema貌似也没办法实现整个表的动态结构。
> 我业务中json实际如下:
> {
> “d”:{
>   “key”: value
>     …. … .  .. ..// 此处key动态扩展
> }
> }
> 我大概想法是d作为一个field,类型是map(但好像不支持map?必须用row)。用row呢,又必须指定其所有field,就不是动态扩展字段了。
Reply | Threaded
Open this post in threaded view
|

Re: Table api son schema

Benchao Li-2
In reply to this post by Zhao,Yi(SEC)
看起来你这个case直接用SQL是可以搞定的。我对table api不太了解,你可以尝试下直接用SQL的DDL~

Zhao,Yi(SEC) <[hidden email]> 于2020年8月11日周二 下午3:40写道:

>
>
>
>
> 如上图,field api被标注过期。替换写法被注释掉,使用*注视掉的写法*会报错如下。
>
>
>
> Exception in thread "main" org.apache.flink.table.api.TableException: A
> raw type backed by type information has no serializable string
> representation. It needs to be resolved into a proper raw type.
>
>        at
> org.apache.flink.table.types.logical.TypeInformationRawType.asSerializableString(TypeInformationRawType.java:97)
>
>        at org.apache.flink.table.descriptors.Schema.field(Schema.java:88)
>
>        at jobs.IpGapUserFt2.main(IpGapUserFt2.java:83)
>
>
>
> 不清楚有啥解决方法吗?
>
>
>
>
>
> 其次,我这边鼓捣了半天,发现使用json schema貌似也没办法实现整个表的动态结构。
>
> 我业务中json实际如下:
>
> {
>
> “d”:{
>
>   “key”: value
>
>     …. … .  .. ..// 此处key动态扩展
>
> }
>
> }
>
> 我大概想法是d作为一个field,类型是map(但好像不支持map?必须用row)。用row呢,又必须指定其所有field,就不是动态扩展字段了。
>


--

Best,
Benchao Li
Reply | Threaded
Open this post in threaded view
|

Re: Table api son schema

Jark
Administrator
目前建议使用 DDL ,不建议使用 tEnv.connect() 方法。
如果想声明 map 类型,在 SQL 中通过  MAP<STRING, STRING> 来声明。

Best,
Jark

On Wed, 12 Aug 2020 at 10:37, Benchao Li <[hidden email]> wrote:

> 看起来你这个case直接用SQL是可以搞定的。我对table api不太了解,你可以尝试下直接用SQL的DDL~
>
> Zhao,Yi(SEC) <[hidden email]> 于2020年8月11日周二 下午3:40写道:
>
> >
> >
> >
> >
> > 如上图,field api被标注过期。替换写法被注释掉,使用*注视掉的写法*会报错如下。
> >
> >
> >
> > Exception in thread "main" org.apache.flink.table.api.TableException: A
> > raw type backed by type information has no serializable string
> > representation. It needs to be resolved into a proper raw type.
> >
> >        at
> >
> org.apache.flink.table.types.logical.TypeInformationRawType.asSerializableString(TypeInformationRawType.java:97)
> >
> >        at org.apache.flink.table.descriptors.Schema.field(Schema.java:88)
> >
> >        at jobs.IpGapUserFt2.main(IpGapUserFt2.java:83)
> >
> >
> >
> > 不清楚有啥解决方法吗?
> >
> >
> >
> >
> >
> > 其次,我这边鼓捣了半天,发现使用json schema貌似也没办法实现整个表的动态结构。
> >
> > 我业务中json实际如下:
> >
> > {
> >
> > “d”:{
> >
> >   “key”: value
> >
> >     …. … .  .. ..// 此处key动态扩展
> >
> > }
> >
> > }
> >
> > 我大概想法是d作为一个field,类型是map(但好像不支持map?必须用row)。用row呢,又必须指定其所有field,就不是动态扩展字段了。
> >
>
>
> --
>
> Best,
> Benchao Li
>
Reply | Threaded
Open this post in threaded view
|

Re: Table api son schema

chuyuan
In reply to this post by Zhao,Yi(SEC)
hello,我也遇到了类似的问题,最终的解决方案能分享下吗?



--
Sent from: http://apache-flink.147419.n8.nabble.com/