hive中建立hive json格式的表及查詢

2022-03-04 19:13:41 字數 2030 閱讀 5933

在hive中對於json的資料格式,可以使用get_json_object或json_tuple先解析然後查詢。

也可以直接在hive中建立json格式的表結構,這樣就可以直接查詢,實戰如下(hive-2.3.0版本):

1. 準備資料來源

將以下內容儲存為test.txt

,"class":,"teacher":}

,"class":,"teacher":}

,"class":,"teacher":}

,"class":,"teacher":}

,"class":,"teacher":}

,"class":,"teacher":}

2. 建立hive表注意serde格式大小寫不能寫錯:org.apache.hive.hcatalog.data.jsonserde

create external table

ifnot

exists

dw_stg.student(

student map

comment "學生資訊",

class map

comment "課程資訊",

teacher map

comment "授課老師資訊"

)comment "學生課程資訊"row format serde'

org.apache.hive.hcatalog.data.jsonserde

'stored

as textfile;

3. 上傳資料將test.txt上傳到剛才建立的student目錄

hdfs dfs -put test.txt /

user

/hive/warehouse/dw_stg.db/student/

4. 使用hql查詢查詢所有資訊記錄:

查詢欄位student資訊

查詢欄位class資訊

查詢學生姓名為test4的所有記錄

取json串中某個值可以使用 student['name'] ,如下:

總體看起來,比使用get_json_object或json_tuple解析方便多了

Hive中的表及其建立

內部表也稱之為managed table 預設儲存在 user hive warehouse下,也可以通過location指定 刪除表時,會刪除表資料以及元資料 create table if not exists t user id int,name string,boolean,age int,...

hive 建立索引

索引是hive0.7之後才有的功能,建立索引需要評估其合理性,因為建立索引也是要磁碟空間,維護起來也是需要代價的 create index idx user phone on table user phone with phone message user phone as org.apache.h...

hive 建立索引

索引是hive0.7之後才有的功能,建立索引需要評估其合理性,因為建立索引也是要磁碟空間,維護起來也是需要代價的 create index idx user phone on table user phone with phone message user phone as org.apache.h...