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都不太合适。 请求指教,万分感谢! |
In reply to this post by xiao cai
String不行,取出来的值是null
Original Message Sender: silence<[hidden email]> Recipient: user-zh<[hidden email]> Date: Monday, Dec 7, 2020 14:26 Subject: Re: FlinkSQL如何定义JsonObject数据的字段类型 可以用string -- Sent from: http://apache-flink.147419.n8.nabble.com/ |
可以试试ROW
发自我的iPhone > 在 2020年12月7日,15:43,xiao cai <[hidden email]> 写道: > > String不行,取出来的值是null > > > Original Message > Sender: silence<[hidden email]> > Recipient: user-zh<[hidden email]> > Date: Monday, Dec 7, 2020 14:26 > Subject: Re: FlinkSQL如何定义JsonObject数据的字段类型 > > > 可以用string -- Sent from: http://apache-flink.147419.n8.nabble.com/ |
In reply to this post by xiao cai
ROW需要写明具体的字段类型,比如:
ROW<`id` string, …>,但是我并没有办法知道jsonObject中具体的schema Original Message Sender: 李轲<[hidden email]> Recipient: user-zh<[hidden email]> Date: Monday, Dec 7, 2020 16:14 Subject: Re: FlinkSQL如何定义JsonObject数据的字段类型 可以试试ROW 发自我的iPhone > 在 2020年12月7日,15:43,xiao cai <[hidden email]> 写道: > > String不行,取出来的值是null > > > Original Message > Sender: silence<[hidden email]> > Recipient: user-zh<[hidden email]> > Date: Monday, Dec 7, 2020 14:26 > Subject: Re: FlinkSQL如何定义JsonObject数据的字段类型 > > > 可以用string -- Sent from: http://apache-flink.147419.n8.nabble.com/ |
Schema 不太确定的话,那么下游怎么用这个数据呢? Best, Hailong 在 2020-12-07 15:21:16,"xiao cai" <[hidden email]> 写道: >ROW需要写明具体的字段类型,比如: >ROW<`id` string, …>,但是我并没有办法知道jsonObject中具体的schema > > > Original Message >Sender: 李轲<[hidden email]> >Recipient: user-zh<[hidden email]> >Date: Monday, Dec 7, 2020 16:14 >Subject: Re: FlinkSQL如何定义JsonObject数据的字段类型 > > >可以试试ROW 发自我的iPhone > 在 2020年12月7日,15:43,xiao cai <[hidden email]> 写道: > > String不行,取出来的值是null > > > Original Message > Sender: silence<[hidden email]> > Recipient: user-zh<[hidden email]> > Date: Monday, Dec 7, 2020 14:26 > Subject: Re: FlinkSQL如何定义JsonObject数据的字段类型 > > > 可以用string -- Sent from: http://apache-flink.147419.n8.nabble.com/ |
flink sql 支持不了这个需要。最多支持到Map,Map内部继续嵌套是不支持的。
hailongwang <[hidden email]> 于2020年12月7日周一 下午8:03写道: > > > Schema 不太确定的话,那么下游怎么用这个数据呢? > > > Best, > Hailong > > 在 2020-12-07 15:21:16,"xiao cai" <[hidden email]> 写道: > >ROW需要写明具体的字段类型,比如: > >ROW<`id` string, …>,但是我并没有办法知道jsonObject中具体的schema > > > > > > Original Message > >Sender: 李轲<[hidden email]> > >Recipient: user-zh<[hidden email]> > >Date: Monday, Dec 7, 2020 16:14 > >Subject: Re: FlinkSQL如何定义JsonObject数据的字段类型 > > > > > >可以试试ROW 发自我的iPhone > 在 2020年12月7日,15:43,xiao cai <[hidden email]> 写道: > > > String不行,取出来的值是null > > > Original Message > Sender: silence< > [hidden email]> > Recipient: user-zh<[hidden email]> > > Date: Monday, Dec 7, 2020 14:26 > Subject: Re: > FlinkSQL如何定义JsonObject数据的字段类型 > > > 可以用string -- Sent from: > http://apache-flink.147419.n8.nabble.com/ > |
In reply to this post by xiao cai
如果我只是想要返回jsonObject.toString的内容呢?不需要解析嵌套结构
Original Message Sender: 赵一旦<[hidden email]> Recipient: user-zh<[hidden email]> Date: Monday, Dec 7, 2020 21:13 Subject: Re: Re: FlinkSQL如何定义JsonObject数据的字段类型 flink sql 支持不了这个需要。最多支持到Map,Map内部继续嵌套是不支持的。 hailongwang <[hidden email]> 于2020年12月7日周一 下午8:03写道: > > > Schema 不太确定的话,那么下游怎么用这个数据呢? > > > Best, > Hailong > > 在 2020-12-07 15:21:16,"xiao cai" <[hidden email]> 写道: > >ROW需要写明具体的字段类型,比如: > >ROW<`id` string, …>,但是我并没有办法知道jsonObject中具体的schema > > > > > > Original Message > >Sender: 李轲<[hidden email]> > >Recipient: user-zh<[hidden email]> > >Date: Monday, Dec 7, 2020 16:14 > >Subject: Re: FlinkSQL如何定义JsonObject数据的字段类型 > > > > > >可以试试ROW 发自我的iPhone > 在 2020年12月7日,15:43,xiao cai <[hidden email]> 写道: > > > String不行,取出来的值是null > > > Original Message > Sender: silence< > [hidden email]> > Recipient: user-zh<[hidden email]> > > Date: Monday, Dec 7, 2020 14:26 > Subject: Re: > FlinkSQL如何定义JsonObject数据的字段类型 > > > 可以用string -- Sent from: > http://apache-flink.147419.n8.nabble.com/ > |
貌似也不行。推荐你把context细化,一层一层细化,直到某个字段为单层Map的时候使用Map。
即放弃部分数据的灵活性,完全的无限嵌套是不行的。 xiao cai <[hidden email]> 于2020年12月7日周一 下午9:33写道: > 如果我只是想要返回jsonObject.toString的内容呢?不需要解析嵌套结构 > > > Original Message > Sender: 赵一旦<[hidden email]> > Recipient: user-zh<[hidden email]> > Date: Monday, Dec 7, 2020 21:13 > Subject: Re: Re: FlinkSQL如何定义JsonObject数据的字段类型 > > > flink sql 支持不了这个需要。最多支持到Map,Map内部继续嵌套是不支持的。 hailongwang < > [hidden email]> 于2020年12月7日周一 下午8:03写道: > > > Schema > 不太确定的话,那么下游怎么用这个数据呢? > > > Best, > Hailong > > 在 2020-12-07 15:21:16,"xiao > cai" <[hidden email]> 写道: > >ROW需要写明具体的字段类型,比如: > >ROW<`id` string, > …>,但是我并没有办法知道jsonObject中具体的schema > > > > > > Original Message > >Sender: > 李轲<[hidden email]> > >Recipient: user-zh<[hidden email]> > > >Date: Monday, Dec 7, 2020 16:14 > >Subject: Re: > FlinkSQL如何定义JsonObject数据的字段类型 > > > > > >可以试试ROW 发自我的iPhone > 在 > 2020年12月7日,15:43,xiao cai <[hidden email]> 写道: > > > > String不行,取出来的值是null > > > Original Message > Sender: silence< > > [hidden email]> > Recipient: user-zh<[hidden email]> > > > Date: Monday, Dec 7, 2020 14:26 > Subject: Re: > > FlinkSQL如何定义JsonObject数据的字段类型 > > > 可以用string -- Sent from: > > http://apache-flink.147419.n8.nabble.com/ > |
In reply to this post by xiao cai
理论上定义成 String 是可以拿到这个 JsonObject string 的值的。你调试看看为什么为 null?
如果确定为 null 的话,这个应该是 1.11 的一个 bug。 PS:我在 1.12 上测试了下,嵌套的定义成 String 可以拿到这个值。 在 2020-12-07 14:42:12,"xiao cai" <[hidden email]> 写道: >String不行,取出来的值是null > > > Original Message >Sender: silence<[hidden email]> >Recipient: user-zh<[hidden email]> >Date: Monday, Dec 7, 2020 14:26 >Subject: Re: FlinkSQL如何定义JsonObject数据的字段类型 > > >可以用string -- Sent from: http://apache-flink.147419.n8.nabble.com/ |
In reply to this post by xiao cai
可以使用字符串的方式,或者自定义 String类型format,内部结构再通过udf去做后续的实现
-- Sent from: http://apache-flink.147419.n8.nabble.com/ |
Administrator
|
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 <[hidden email]> wrote: > 可以使用字符串的方式,或者自定义 String类型format,内部结构再通过udf去做后续的实现 > > > > -- > Sent from: http://apache-flink.147419.n8.nabble.com/ |
@JarkWu,你的意思是定义成string,但是输入数据是一个json object也可以支持?这岂不是需要对json部分的反序列化做特殊定制。
比如a字段是string,但数据中a属性是这样的: "a":{ .. }。在java中相当于需要先将a这部分反序列化为一个map,然后再序列化为json(字符串)后作为a这个string的值。 ?是吗。 Jark Wu <[hidden email]> 于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 <[hidden email]> wrote: > > > 可以使用字符串的方式,或者自定义 String类型format,内部结构再通过udf去做后续的实现 > > > > > > > > -- > > Sent from: http://apache-flink.147419.n8.nabble.com/ > |
In reply to this post by xiao cai
好的,计划下周升级测试下,另:1.12.1计划何时发布呢
Original Message Sender: Jark Wu<[hidden email]> Recipient: user-zh<[hidden email]> Date: Tuesday, Dec 8, 2020 13:41 Subject: Re: FlinkSQL如何定义JsonObject数据的字段类型 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 <[hidden email]> wrote: > 可以使用字符串的方式,或者自定义 String类型format,内部结构再通过udf去做后续的实现 > > > > -- > Sent from: http://apache-flink.147419.n8.nabble.com/ |
Administrator
|
Hi 赵一旦,
这部分 jackson 组件已经自动处理了这部分逻辑。 Hi xiaocai, 你有什么 issue 是需要1.12.1的? 1.12.0 这两天即将发布。 Best, Jark On Wed, 9 Dec 2020 at 14:34, xiao cai <[hidden email]> wrote: > 好的,计划下周升级测试下,另:1.12.1计划何时发布呢 > > > Original Message > Sender: Jark Wu<[hidden email]> > Recipient: user-zh<[hidden email]> > Date: Tuesday, Dec 8, 2020 13:41 > Subject: Re: FlinkSQL如何定义JsonObject数据的字段类型 > > > 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 < > [hidden email]> wrote: > 可以使用字符串的方式,或者自定义 > String类型format,内部结构再通过udf去做后续的实现 > > > > -- > Sent from: > http://apache-flink.147419.n8.nabble.com/ |
In reply to this post by xiao cai
Hi Jark
Original Message Sender: Jark Wu<[hidden email]> Recipient: user-zh<[hidden email]> Date: Wednesday, Dec 9, 2020 14:40 Subject: Re: FlinkSQL如何定义JsonObject数据的字段类型 Hi 赵一旦, 这部分 jackson 组件已经自动处理了这部分逻辑。 Hi xiaocai, 你有什么 issue 是需要1.12.1的? 1.12.0 这两天即将发布。 Best, Jark On Wed, 9 Dec 2020 at 14:34, xiao cai <[hidden email]> wrote: > 好的,计划下周升级测试下,另:1.12.1计划何时发布呢 > > > Original Message > Sender: Jark Wu<[hidden email]> > Recipient: user-zh<[hidden email]> > Date: Tuesday, Dec 8, 2020 13:41 > Subject: Re: FlinkSQL如何定义JsonObject数据的字段类型 > > > 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 < > [hidden email]> wrote: > 可以使用字符串的方式,或者自定义 > String类型format,内部结构再通过udf去做后续的实现 > > > > -- > Sent from: > http://apache-flink.147419.n8.nabble.com/ |
In reply to this post by xiao cai
Hi Jark
sorry,是1.12.0, 我打错了 Original Message Sender: Jark Wu<[hidden email]> Recipient: user-zh<[hidden email]> Date: Wednesday, Dec 9, 2020 14:40 Subject: Re: FlinkSQL如何定义JsonObject数据的字段类型 Hi 赵一旦, 这部分 jackson 组件已经自动处理了这部分逻辑。 Hi xiaocai, 你有什么 issue 是需要1.12.1的? 1.12.0 这两天即将发布。 Best, Jark On Wed, 9 Dec 2020 at 14:34, xiao cai <[hidden email]> wrote: > 好的,计划下周升级测试下,另:1.12.1计划何时发布呢 > > > Original Message > Sender: Jark Wu<[hidden email]> > Recipient: user-zh<[hidden email]> > Date: Tuesday, Dec 8, 2020 13:41 > Subject: Re: FlinkSQL如何定义JsonObject数据的字段类型 > > > 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 < > [hidden email]> wrote: > 可以使用字符串的方式,或者自定义 > String类型format,内部结构再通过udf去做后续的实现 > > > > -- > Sent from: > http://apache-flink.147419.n8.nabble.com/ |
Administrator
|
嗯 1.12.0 这两天就会发布。
On Wed, 9 Dec 2020 at 14:45, xiao cai <[hidden email]> wrote: > Hi Jark > sorry,是1.12.0, 我打错了 > > > Original Message > Sender: Jark Wu<[hidden email]> > Recipient: user-zh<[hidden email]> > Date: Wednesday, Dec 9, 2020 14:40 > Subject: Re: FlinkSQL如何定义JsonObject数据的字段类型 > > > Hi 赵一旦, 这部分 jackson 组件已经自动处理了这部分逻辑。 Hi xiaocai, 你有什么 issue 是需要1.12.1的? > 1.12.0 这两天即将发布。 Best, Jark On Wed, 9 Dec 2020 at 14:34, xiao cai < > [hidden email]> wrote: > 好的,计划下周升级测试下,另:1.12.1计划何时发布呢 > > > Original > Message > Sender: Jark Wu<[hidden email]> > Recipient: user-zh< > [hidden email]> > Date: Tuesday, Dec 8, 2020 13:41 > Subject: > Re: FlinkSQL如何定义JsonObject数据的字段类型 > > > 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 < > > [hidden email]> wrote: > 可以使用字符串的方式,或者自定义 > > String类型format,内部结构再通过udf去做后续的实现 > > > > -- > Sent from: > > http://apache-flink.147419.n8.nabble.com/ |
Free forum by Nabble | Edit this page |