日常開(kāi)發(fā)中都是用的簡(jiǎn)便json格式,但是偶爾也會(huì)遇到嵌套json的時(shí)候,因此在用flinksql的時(shí)候就有點(diǎn)麻煩,下面用簡(jiǎn)單例子簡(jiǎn)單定義處理下
1,數(shù)據(jù)是網(wǎng)上摘抄,但包含里常用的大部分格式
{
?? ?"afterColumns": {
?? ??? ?"created": "1589186680",
?? ??? ?"extra": {
?? ??? ??? ?"canGiving": false
?? ??? ?},
?? ??? ?"parameter": [1, 2, 3, 4]
?? ?},
?? ?"beforeColumns": null,
?? ?"tableVersion": {
?? ??? ?"binlogFile": null,
?? ??? ?"binlogPosition": 0,
?? ??? ?"version": 0
?? ?},
?? ?"touchTime": 1589186680591,
? ? "type":3,
?? ?"arr": [{
?? ??? ?"address": "北京市海淀區(qū)",
?? ??? ?"city": "beijing"
?? ?}, {
?? ??? ?"address": "北京市海淀區(qū)",
?? ??? ?"city": "beijing"
?? ?}, {
?? ??? ?"address": "北京市海淀區(qū)",
?? ??? ?"city": "beijing"
?? ?}]
}
注意:
Json 中的每個(gè) {} 都需要用 Row 類(lèi)型來(lái)表示
Json 中的每個(gè) [] 都需要用 Arrary 類(lèi)型來(lái)表示
數(shù)組的下標(biāo)是從 1 開(kāi)始的不是 0?
查詢(xún)select時(shí),關(guān)鍵字需要加反引號(hào) 如上面 SQL 中的 `type`
select 語(yǔ)句中的字段類(lèi)型和順序一定要和結(jié)果表的字段類(lèi)型和順序保持一致
因此:FlinkSql語(yǔ)句應(yīng)該為
CREATE TABLE kafka_source (
? ? afterColumns ROW(created STRING,extra ROW(canGiving BOOLEAN),`parameter` ARRAY <INT>) ,
? ? beforeColumns STRING ,
? ? tableVersion ROW(binlogFile STRING,binlogPosition INT ,version INT) ,
? ? touchTime bigint,?
? ? `type` INT,
? ? arr ARRAY<ROW<address STRING,city STRING>>
) WITH (
? ? 'connector' = 'kafka', -- 使用 kafka connector
? ? 'topic' = 'test', ?-- kafka topic
? ? 'properties.bootstrap.servers' = 'master:9092,storm1:9092,storm2:9092', ?-- broker連接信息
? ? 'properties.group.id' = 'jason_flink_test', -- 消費(fèi)kafka的group_id
? ? 'scan.startup.mode' = 'latest-offset', ?-- 讀取數(shù)據(jù)的位置
? ? 'format' = 'json', ?-- 數(shù)據(jù)源格式為 json
? ? 'json.fail-on-missing-field' = 'true', -- 字段丟失任務(wù)不失敗
? ? 'json.ignore-parse-errors' = 'false' ?-- 解析失敗跳過(guò)
)
2,數(shù)據(jù)格式以及對(duì)應(yīng)的flinksql格式
?文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-408057.html
引自:https://blog.csdn.net/qq_21383435/article/details/124889251文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-408057.html
到了這里,關(guān)于Flink:FlinkSql解析嵌套Json的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!