資料庫 HIVE SQL之JSON字串解析的坑

2021-10-01 14:25:17 字數 1427 閱讀 5374

對於hive對json字串的解析小白在之前博文中已經有兩篇做過詳細的介紹了,這邊博文主要記錄一下,小白在工作中遇到的乙個例項,巨坑。

案例如下:

一眼看上去,是不是符合json字串的風格,然後就開始解析

select filters,

id,index,

name,

type

from aa

lateral view json_tuple(filters, 'id', 'index', 'name', 'type') b

as id,

index,

name,

type

結果為:

百思不得其解,為什麼明明有資料,解析不出來呢?

仔細看中"subfilters":,這個地方和別的不一樣,像是缺了乙個引號,那麼抱著試試看的想法,試一下:

select filters,

id,index,

name,

type

from aa

lateral view json_tuple(regexp_replace(filters,'\\"subfilters\\"\\:\\,','\\"subfilters\\"\\:\\" \\"\\,'), 'id', 'index', 'name', 'type') b

as id,

index,

name,

type

將空的部分用引號代替,看下結果:

可以了,同樣,不用引號代替用別的符號也行,比如{}都可以

看下替換的情況:

select filters,

id,index,

name,

type

from aa

lateral view json_tuple(regexp_replace(filters,'\\"subfilters\\"\\:\\,','\\"subfilters\\"\\:\\\\,'), 'id', 'index', 'name', 'type') b

as id,

index,

name,

type

結果為:

所以,遇到解析不出來的情況時,一定要研究記錄內容的情況,一定是有不符合json規範的時候才會產生這種情形。

Hive SQL 之 資料庫

1 hive 中的資料庫本質是乙個目錄,通常資料庫儲存在hive.metastore.warehouse.dir所指定的目錄下,以.db為字尾,例如testdb.db,該資料庫中的表以這個資料庫目錄的子目錄存在。注 default這個資料庫是hive預設的資料庫,若不指定資料庫,這預設使用該資料庫。...

資料庫 HIVE SQL索引及其使用

最近在用一張8億資料量表作為主表去關聯乙個千萬量級的表時遇到乙個問題,job執行的特別慢,而且大量的時間花費在了大表的查詢上。如何解決這個問題,首先想到是不是由於資料偏移造成的,對應了各種資料偏移的場景,最後認定不是資料偏移造成的。那怎麼辦呢?後來想到用索引!由於對於索引不是特別了解,查了各種資料,...

資料庫 HIVE SQL 增刪改查方法

目錄 1 展示乙個表的分割槽 2 檢視乙個job的原 3 修改乙個表中某個欄位的描述 4 刪除分割槽 5 修改表名 6 新增一列 7 修改列的屬性 8 新增分割槽 9 刪除表 10 根據乙個已存在的表,新建乙個結構一樣的表 show partitions dw htlbizdb.userlibrar...