SQL解析复杂JSON问题

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

SQL解析复杂JSON问题

guaishushu1103@163.com
麻烦问下我已经在字段上面定了结构,还需要再写format.json-schema吗?CREATE TABLE user_log(
    id VARCHAR,
    timestam VARCHAR,
    user_info ROW(user_id string, name string ),
    jsonArray ARRAY<ROW(user_id222 STRING, name222 STRING)>
) WITH (
    'connector.type' = 'kafka',
    'connector.version' = 'universal',
    'connector.topic' = 'complex_string',
    'connector.properties.zookeeper.connect' = 'venn:2181',
    'connector.properties.bootstrap.servers' = 'venn:9092',
    'connector.startup-mode' = 'earliest-offset',
    'format.type' = 'json',
    'format.json-schema' = '{
        "type": "object",
        "properties": {
           "id": {type: "string"},
           "timestam": {type: "string"},
           "user_info":{type: "object",
                   "properties" : {
                       "user_id" : {type:"string"},
                       "name":{type:"string"}
                   }
             },
            "jsonArray":{"type": "array",
                         "items": {
                                  "type": "object",
                                  "properties" : {
                                      "user_id222" : {type:"string"},
                                      "name222" : {type:"string"}
                                     }
                                  }
                         }
        }
    }'
);




[hidden email]
Reply | Threaded
Open this post in threaded view
|

Re: SQL解析复杂JSON问题

Wei Zhong
Hi 你好,

这个取决于你使用的flink版本,1.11版本会自动从table schema中解析,而1.10版本如果table schema和json schema不是完全相同的话,需要手动写json-schema:
https://ci.apache.org/projects/flink/flink-docs-release-1.11/dev/table/connectors/formats/json.html#data-type-mapping <https://ci.apache.org/projects/flink/flink-docs-release-1.11/dev/table/connectors/formats/json.html#data-type-mapping>
https://ci.apache.org/projects/flink/flink-docs-release-1.10/dev/table/connect.html#json-format <https://ci.apache.org/projects/flink/flink-docs-release-1.10/dev/table/connect.html#json-format>


> 在 2020年12月4日,16:39,[hidden email] 写道:
>
> 麻烦问下我已经在字段上面定了结构,还需要再写format.json-schema吗?CREATE TABLE user_log(
>    id VARCHAR,
>    timestam VARCHAR,
>    user_info ROW(user_id string, name string ),
>    jsonArray ARRAY<ROW(user_id222 STRING, name222 STRING)>
> ) WITH (
>    'connector.type' = 'kafka',
>    'connector.version' = 'universal',
>    'connector.topic' = 'complex_string',
>    'connector.properties.zookeeper.connect' = 'venn:2181',
>    'connector.properties.bootstrap.servers' = 'venn:9092',
>    'connector.startup-mode' = 'earliest-offset',
>    'format.type' = 'json',
>    'format.json-schema' = '{
>        "type": "object",
>        "properties": {
>           "id": {type: "string"},
>           "timestam": {type: "string"},
>           "user_info":{type: "object",
>                   "properties" : {
>                       "user_id" : {type:"string"},
>                       "name":{type:"string"}
>                   }
>             },
>            "jsonArray":{"type": "array",
>                         "items": {
>                                  "type": "object",
>                                  "properties" : {
>                                      "user_id222" : {type:"string"},
>                                      "name222" : {type:"string"}
>                                     }
>                                  }
>                         }
>        }
>    }'
> );
>
>
>
>
> [hidden email]

Reply | Threaded
Open this post in threaded view
|

Re: SQL解析复杂JSON问题

李轲
如果1.11想做自定义解析和映射,只能通过udf么?

发自我的iPhone

> 在 2020年12月4日,16:52,Wei Zhong <[hidden email]> 写道:
>
> Hi 你好,
>
> 这个取决于你使用的flink版本,1.11版本会自动从table schema中解析,而1.10版本如果table schema和json schema不是完全相同的话,需要手动写json-schema:
> https://ci.apache.org/projects/flink/flink-docs-release-1.11/dev/table/connectors/formats/json.html#data-type-mapping <https://ci.apache.org/projects/flink/flink-docs-release-1.11/dev/table/connectors/formats/json.html#data-type-mapping>
> https://ci.apache.org/projects/flink/flink-docs-release-1.10/dev/table/connect.html#json-format <https://ci.apache.org/projects/flink/flink-docs-release-1.10/dev/table/connect.html#json-format>
>
>
>> 在 2020年12月4日,16:39,[hidden email] 写道:
>>
>> 麻烦问下我已经在字段上面定了结构,还需要再写format.json-schema吗?CREATE TABLE user_log(
>>   id VARCHAR,
>>   timestam VARCHAR,
>>   user_info ROW(user_id string, name string ),
>>   jsonArray ARRAY<ROW(user_id222 STRING, name222 STRING)>
>> ) WITH (
>>   'connector.type' = 'kafka',
>>   'connector.version' = 'universal',
>>   'connector.topic' = 'complex_string',
>>   'connector.properties.zookeeper.connect' = 'venn:2181',
>>   'connector.properties.bootstrap.servers' = 'venn:9092',
>>   'connector.startup-mode' = 'earliest-offset',
>>   'format.type' = 'json',
>>   'format.json-schema' = '{
>>       "type": "object",
>>       "properties": {
>>          "id": {type: "string"},
>>          "timestam": {type: "string"},
>>          "user_info":{type: "object",
>>                  "properties" : {
>>                      "user_id" : {type:"string"},
>>                      "name":{type:"string"}
>>                  }
>>            },
>>           "jsonArray":{"type": "array",
>>                        "items": {
>>                                 "type": "object",
>>                                 "properties" : {
>>                                     "user_id222" : {type:"string"},
>>                                     "name222" : {type:"string"}
>>                                    }
>>                                 }
>>                        }
>>       }
>>   }'
>> );
>>
>>
>>
>>
>> [hidden email]
>
>

Reply | Threaded
Open this post in threaded view
|

Re: SQL解析复杂JSON问题

Wei Zhong
是的,1.11想做JSON的自定义解析和映射只能在json format以外的地方进行了

> 在 2020年12月4日,17:19,李轲 <[hidden email]> 写道:
>
> 如果1.11想做自定义解析和映射,只能通过udf么?
>
> 发自我的iPhone
>
>> 在 2020年12月4日,16:52,Wei Zhong <[hidden email]> 写道:
>>
>> Hi 你好,
>>
>> 这个取决于你使用的flink版本,1.11版本会自动从table schema中解析,而1.10版本如果table schema和json schema不是完全相同的话,需要手动写json-schema:
>> https://ci.apache.org/projects/flink/flink-docs-release-1.11/dev/table/connectors/formats/json.html#data-type-mapping <https://ci.apache.org/projects/flink/flink-docs-release-1.11/dev/table/connectors/formats/json.html#data-type-mapping>
>> https://ci.apache.org/projects/flink/flink-docs-release-1.10/dev/table/connect.html#json-format <https://ci.apache.org/projects/flink/flink-docs-release-1.10/dev/table/connect.html#json-format>
>>
>>
>>> 在 2020年12月4日,16:39,[hidden email] 写道:
>>>
>>> 麻烦问下我已经在字段上面定了结构,还需要再写format.json-schema吗?CREATE TABLE user_log(
>>>  id VARCHAR,
>>>  timestam VARCHAR,
>>>  user_info ROW(user_id string, name string ),
>>>  jsonArray ARRAY<ROW(user_id222 STRING, name222 STRING)>
>>> ) WITH (
>>>  'connector.type' = 'kafka',
>>>  'connector.version' = 'universal',
>>>  'connector.topic' = 'complex_string',
>>>  'connector.properties.zookeeper.connect' = 'venn:2181',
>>>  'connector.properties.bootstrap.servers' = 'venn:9092',
>>>  'connector.startup-mode' = 'earliest-offset',
>>>  'format.type' = 'json',
>>>  'format.json-schema' = '{
>>>      "type": "object",
>>>      "properties": {
>>>         "id": {type: "string"},
>>>         "timestam": {type: "string"},
>>>         "user_info":{type: "object",
>>>                 "properties" : {
>>>                     "user_id" : {type:"string"},
>>>                     "name":{type:"string"}
>>>                 }
>>>           },
>>>          "jsonArray":{"type": "array",
>>>                       "items": {
>>>                                "type": "object",
>>>                                "properties" : {
>>>                                    "user_id222" : {type:"string"},
>>>                                    "name222" : {type:"string"}
>>>                                   }
>>>                                }
>>>                       }
>>>      }
>>>  }'
>>> );
>>>
>>>
>>>
>>>
>>> [hidden email]
>>
>>
>