當前位置:成語大全網 - 書法字典 - Hive處理Json數據

Hive處理Json數據

Json數據格式是壹種常用的數據格式,例如隱藏數據、業務數據以及前端和後端調用,因此我們有必要學習如何處理這種數據格式。

卡特彼勒json.data

創建配置單元表並加載數據

Json_tuple不支持Json的嵌套處理,但支持壹次獲取多個頂級鍵對應的值。

Get_json_object不支持壹次獲取多個值,但支持處理復雜的json。

用法:get _ JSON _ object(string JSON _ string,string path)前面,我們介紹了如何檢查desc函數get _ JSON _ object的用法。

返回值:字符串

描述:解析json的字符串json _ String並返回path指定的內容。如果輸入的json字符串無效,則返回NUll,並且該函數壹次只能返回壹個數據項。

具體示例:get _ JSON _ object(value,‘$。id’)

select get _ JSON _ object(text,“$。movie“)來自ods.ods _ json _ data

這個函數的缺點是它只能返回壹個值,也就是說,我們不能壹次從json中提取多個值。如果我們想提取多個值,我們必須多次調用此函數,但我們下面介紹的json_tuple是可以的,但這並不意味著此函數不強大或任何東西。記住這個函數的api可以節省妳很多時間。

用法:按JSON _ tuple(JSON STR,P1,P2,...,PN)是我們要提取的密鑰。

返回值:元組(v1,...vn)返回值v1...這裏的vn對應於鍵p1....pn。

select JSON _ tuple(text,movie,rate,timeStamp,‘uid‘)from ODS . ODS _ JSON _ data;

Json_tuple相當於get_json_object。優點是可以壹次解析多個Json字段。

我們前面說過json_tuple不支持嵌套json的處理。

這時,妳發現我提取了json數組中的所有網站。有什麽簡單的方法嗎?理論上,get_json_object只能有壹個返回值,無論如何都需要編寫多個返回值。妳有沒有想過壹個問題,如果這個數組中有100個元素是json,我需要每個json網站。我需要寫100次嗎?如果妳仔細閱讀這個函數的api,妳會發現另壹個符號*

現在妳知道了,get_json_object只能返回壹個元素,而不僅僅是壹個字符串,字符串原本是壹個json數組。如果我們解析來自json的數組呢?

需要註意的是,在以下操作之後,您將獲得壹個json字符串,因此您可以按照上述方式再次處理它。

但有時我們希望直接獲得它,而不是以這種方式嵌套它。在這種情況下,我們實際上結合了上面嵌套的get_json_object函數的路徑參數。

這個時候,如果我們去*求福,就會很簡單。

事實上,在這裏我們學習了指定數組的下標來獲取元素,並指定*來獲取所有元素。這就像我想得到前三個或偶數或奇數。哈哈,如果妳回頭看看api,妳會知道它提供了壹個Union運算符。只需指定您想要組合和獲取的任何下標。

讓我們試著得到壹個偶數,或奇數,或在壹定範圍內的奇數或偶數。其實就是上面提供的數組切片,可以參考api使用。

但是我試了壹下,發現這個函數有壹個bug,無法達到切片的效果,我總是全部退回。

對於上面json.data的數據,我們是否可以在加載數據到達hive時處理它,而不是在加載完成後使用它時處理它,尤其是對於這種json格式,其中的嵌套結構不是很復雜?

這個方法需要註意妳的數據類型和字段名應該匹配,否則妳會報錯或者妳得不到值。更復雜的嵌套結構呢?事實上,也可以在上述數據的基礎上添加壹個嵌套字段。