五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

數(shù)倉json字段提取通用方案

2023-01-16 14:00 作者:Koy1  | 我要投稿

統(tǒng)一方案

  1. 普通Json字符串可直接使用 方法1 方法2 ?get_json_object 或 json_tuple

  2. Json數(shù)組直接使用udf函數(shù),杜絕使用 方法3,目前數(shù)倉中多數(shù)是方法3,建議統(tǒng)一整改,消除隱患

背景

數(shù)據(jù)倉庫目前的數(shù)據(jù)主要源于業(yè)務(wù)系統(tǒng),數(shù)據(jù)結(jié)構(gòu)內(nèi)容繁雜,在做數(shù)據(jù)清洗時(shí),常常會(huì)需要解析提取字符串類型的json數(shù)據(jù),不同的人有不同的處理方法,雖然有些方法看起來能解決當(dāng)前的需求,但卻存在隱患,下面會(huì)給出具體的場景說明為什么,因此就需要一個(gè)通用的方案來解析這些Json,消除隱患,提升數(shù)據(jù)質(zhì)量。

hive內(nèi)置函數(shù)

1.get_json_object(string json_string, string path)

返回值:json字符串中的1個(gè)數(shù)據(jù)項(xiàng)

說明:解析json的字符串json_string,返回path指定的內(nèi)容。如果輸入的json字符串無效,那么返回NUll,這個(gè)函數(shù)每次只能返回一個(gè)數(shù)據(jù)項(xiàng)

select get_json_object(jsonstr, '$.website') as website from?tmp;

返回值:json字符串中的多個(gè)數(shù)據(jù)項(xiàng)

說明:解析json的字符串json_string,返回k1,k2,...,kn指定的內(nèi)容。如果輸入的json字符串無效,那么返回NUll,這個(gè)函數(shù)每次能返回多個(gè)數(shù)據(jù)項(xiàng),需配合 LATERAL VIEW 一起使用

select

????b.website

????, b.name

from?

????tmp?a

lateral view

json_tuple(a.jsonstr,'website','name') b as website,name

where XXX?

注意1??

json_tuple相較于get_json_object的優(yōu)勢就是一次可以解析多個(gè)Json字段。但是如果我們有個(gè)Json數(shù)組,這兩個(gè)函數(shù)都無法處理

udf函數(shù)提取Json數(shù)組

歸根結(jié)底,我們想要在hive中提取Json數(shù)組中的數(shù)據(jù),首先得讓它是個(gè)數(shù)組,而非字符串,那么想要通過hive內(nèi)置函數(shù)將 String 類型的Json數(shù)組轉(zhuǎn)成數(shù)組類型,就要用到分割符分割的方式去實(shí)現(xiàn)(目前好像也只能這么干),只要用到分割符,就會(huì)存在隱患

通過java程序,可規(guī)避使用分割符分割字符串?dāng)?shù)組的目的

/*

這是自定義函數(shù),可將一個(gè)string類型的json數(shù)組,轉(zhuǎn)成hive可接受的json數(shù)組

*/


數(shù)倉json字段提取通用方案的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國家法律
丹江口市| 双桥区| 洛南县| 青铜峡市| 广南县| 大田县| 五华县| 宁蒗| 苏尼特左旗| 乌拉特前旗| 临汾市| 罗甸县| 涿鹿县| 会宁县| 克什克腾旗| 天台县| 福泉市| 新密市| 邓州市| 东莞市| 田东县| 中卫市| 子长县| 渭南市| 巴青县| 沾益县| 正阳县| 栾川县| 东光县| 临泽县| 兴义市| 青岛市| 余干县| 上蔡县| 巢湖市| 栖霞市| 渭南市| 久治县| 秭归县| 讷河市| 化隆|