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/