如上图,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,就不是动态扩展字段了。 |
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,就不是动态扩展字段了。 |
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 |
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 > |
In reply to this post by Zhao,Yi(SEC)
|
Free forum by Nabble | Edit this page |