日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

hive - 解析 json

發布時間:2024/7/5 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 hive - 解析 json 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

內置函數:get_json_object(json串,解析路徑)

解析路徑說明:

$ :跟對象

. :子對象

[] :數組下標

* :所有

舉例:

數據樣例:

{"movie":"1190","rate":"4.8","timestamp":"978300760","uid":"145325"}

{"movie":"1191","rate":"3.7","timestamp":"978200613","uid":"234566"}

{"movie":"1190","rate":"4.5","timestamp":"977500902","uid":"474532"}

...

將數據導入hive:

create table rating(line string);#建表,只有一列數據 load data local inpath '/user/rating.json' into table rating;#從本地導數據

?

1)求評分次數排名前3的電影

SELECT get_json_object(t.line, '$.movie') as movieid, count(*) as tatol FROM rating t GROUP BY 1 ORDER BY 2 LIMIT 3;

  • t.line是要解析的json串,
  • $定位到第一級目錄{
  • .定位到第二級目錄"movie":"1190","rate":"4.8","timestamp":"978300760","uid":"145325"
  • movie:通過key定位到value值1190

?

2)將整個json文件解析成一張表

1)建一個用于存放數據的表

create table rate(movie int,rate float,time bigint,uid bigint);

?

2)解析并加載數據

insert into table rate select get_json_object(t.line, '$.movie') as movie, get_json_object(t.line, '$.rate') as rate, get_json_object(t.line, '$.timestamp') as time, get_json_object(t.line, '$.uid') as uid FROM rating t;

?

3)解析較復雜json

{

"status": 0,

"data": {"search_data":[{

"name": "奈良市",

"location": {

"lat": 34.685087

}]

}

1-解析status

get_json_object(t.line, '$.status');

?

2-解析name

get_json_object(t.line, '$.data.search_data.[0].name');

?

3-解析lat

get_json_object(t.line, '$.data.search_data.[0].location.lat');

?

?

?

?

總結

以上是生活随笔為你收集整理的hive - 解析 json的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。