在hive中對於json的資料格式,可以使用get_json_object或json_tuple先解析然後查詢。
也可以直接在hive中建立json格式的表結構,這樣就可以直接查詢,實戰如下(hive-2.3.0版本):
1. 準備資料來源
將以下內容儲存為test.txt
,"class":,"teacher":}2. 建立hive表注意serde格式大小寫不能寫錯:org.apache.hive.hcatalog.data.jsonserde,"class":,"teacher":}
,"class":,"teacher":}
,"class":,"teacher":}
,"class":,"teacher":}
,"class":,"teacher":}
create external table3. 上傳資料將test.txt上傳到剛才建立的student目錄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;
hdfs dfs -put test.txt /4. 使用hql查詢查詢所有資訊記錄:user
/hive/warehouse/dw_stg.db/student/
查詢欄位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...