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 xiao cai <fl...@163.com> on 2020/12/07 04:52:29 UTC
FlinkSQL如何定义JsonObject数据的字段类型
Hi,
flink version: 1.11.2
api: flink-sql
场景:使用flink sql定义了一张kafka的source表,kafka中数据为json格式的字符串。
其中context是json的一个键,其值为jsonObject,数据示例如下:
{
“id”: 1,
"context”: {
…
(这里的数据为jsonObject,具体schema不确定,
由各个业务方自行确定,可能嵌套,也可能不嵌套,完全不可控)
}
}
建表语句为:
CREATE TABLE json_source (
id bigint,
context <TYPE>
) WITH (
'connector' = 'kafka’,
'format' = 'json’
);
问题: 该使用什么数据类型来指定类型<TYPE>呢?从目前的flink sql 的 data type 里感觉没有很合适的匹配项,不管是ROW,或者MAP都不太合适。
请求指教,万分感谢!
Re: FlinkSQL如何定义JsonObject数据的字段类型
Posted by silence <sl...@aliyun.com.INVALID>.
可以用string
--
Sent from: http://apache-flink.147419.n8.nabble.com/
Re: FlinkSQL如何定义JsonObject数据的字段类型
Posted by 赵一旦 <hi...@gmail.com>.
@JarkWu,你的意思是定义成string,但是输入数据是一个json object也可以支持?这岂不是需要对json部分的反序列化做特殊定制。
比如a字段是string,但数据中a属性是这样的:
"a":{ .. }。在java中相当于需要先将a这部分反序列化为一个map,然后再序列化为json(字符串)后作为a这个string的值。
?是吗。
Jark Wu <im...@gmail.com> 于2020年12月8日周二 下午1:42写道:
> hailong 说的定义成 STRING 是在1.12 版本上支持的,
> https://issues.apache.org/jira/browse/FLINK-18002
>
> 1.12 这两天就会发布,如果能升级的话,可以尝试一下。
>
> Best,
> Jark
>
> On Tue, 8 Dec 2020 at 11:56, wxpcc <wx...@outlook.com> wrote:
>
> > 可以使用字符串的方式,或者自定义 String类型format,内部结构再通过udf去做后续的实现
> >
> >
> >
> > --
> > Sent from: http://apache-flink.147419.n8.nabble.com/
>
Re: FlinkSQL如何定义JsonObject数据的字段类型
Posted by Jark Wu <im...@gmail.com>.
hailong 说的定义成 STRING 是在1.12 版本上支持的,
https://issues.apache.org/jira/browse/FLINK-18002
1.12 这两天就会发布,如果能升级的话,可以尝试一下。
Best,
Jark
On Tue, 8 Dec 2020 at 11:56, wxpcc <wx...@outlook.com> wrote:
> 可以使用字符串的方式,或者自定义 String类型format,内部结构再通过udf去做后续的实现
>
>
>
> --
> Sent from: http://apache-flink.147419.n8.nabble.com/
Re: FlinkSQL如何定义JsonObject数据的字段类型
Posted by wxpcc <wx...@outlook.com>.
可以使用字符串的方式,或者自定义 String类型format,内部结构再通过udf去做后续的实现
--
Sent from: http://apache-flink.147419.n8.nabble.com/