溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

hive需要掌握哪些基礎知識

發布時間:2021-12-10 09:26:55 來源:億速云 閱讀:241 作者:小新 欄目:大數據

這篇文章主要為大家展示了“hive需要掌握哪些基礎知識”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“hive需要掌握哪些基礎知識”這篇文章吧。

關于Hive

Hive作為數據倉庫,起源于Facebook,工作原理大致可以解釋為:對用戶輸入的hql進行解釋,編譯,優化并生成查詢計劃,并轉化為MapReduce任務進而執行:解釋器——編譯器——優化器——執行器;

Hive的元數據一般存儲在關系型數據庫中,如MySql;

底層存儲用到的是HDFS分布式存儲系統;

優點:1. 簡單易上手:提供了類SQL查詢語言HQL;2.可擴展:為超大數據集設計了計算/擴展能力(MR作為計算引擎,HDFS作為存儲系統);3. 提供統一的元數據管理;4. Hive支持用戶自定義函數,用戶可以根據自己的需求來實現自己的函數:繼承hive的UDF類,重寫evaluate方法;5. 容錯:良好的容錯性,節點出現問題SQL仍可完成執行;

缺點:1. hive的HQL表達能力有限;2. 效率比較低,自動生成的mapreduce作業,通常情況下不夠智能化,且調優比較困難;

Hive與傳統數據庫的異同

Hive數據類型

Hive用戶接口

1)Hive CLI(Hive CommandLine,Hive命令行),客戶端可以直接在命令行模式下進行操作

2)hwi(Hive WebInterface,Hive Web接口),Hive提供了更直觀的Web界面

3)hiveserver,Hive提供了Thrift服務,Thrift客戶端目前支持C++/Java/PHP/Python/Ruby

Hive常用文件格式

Textfile:默認格式,數據不做壓縮,磁盤開銷大,數據解析開銷大;

SEQUENCEFILE:SequenceFile是Hadoop API提供的一種二進制文件支持,其具有使用方便、可分割、可壓縮的特點;

rcfile:RCFILE是一種行列存儲相結合的存儲方式。首先,其將數據按行分塊,保證同一個record在一個塊上,避免讀一個記錄需要讀取多個block。其次,塊數據列式存儲,有利于數據壓縮和快速的列存取;

parquet:Apache Parquet是Hadoop生態圈中一種新型列式存儲格式,它可以兼容Hadoop生態圈中大多數計算框架;

Hive數據導入導出

從本地數據導入:load data local inpath '/home/hadoop/test.txt' overwrite into table test01partition(state='good', city='xiamen');

從其他表導入數據:from test01 insert overwrite table test02 partition(state='good', city='xiamen') select id,name,age,course,body,address;

導出數據到本地文件系統:insert overwrite localdirectory '/home/hns/test' select * from test01;

導出數據到HDFS中:insertoverwrite directory '/home/hns/test' select * from test01;

導出到hive的另一張表:insertinto table test02 partition (age='25') select id, name, tel from test01;

Hive基本語句

建表:
CTRAT TABLE IF NOT EXISTS  page_view(viewTime INT,userid BIGINT)

ROWFORMAT DELIMITED FIELDS TERMINATED BY ‘,’ //指定了列分隔符為,
LINE TERMINATED BY ‘\n’ //指定了行分隔符為換行符\n

PARTITIONEDBY (country STRING, state STRING)  //用這兩個字段分區
STORED AS TEXTFILE //指定存儲文件的格式

刪表:

DROPTABLE IF EXISTS page_view;

修改列信息:

ALTERTABLE page_view ADD COLUMNS ( appname STRING COMMENT ‘Application name',sessionid LONG COMMENT ‘ The current session id');

查詢:

select* from tablename;(全表查詢,生產環境不建議使用,慢且占用資源,僅用作范例)

可添加limit關鍵字限制查詢條數,或where語句篩選查詢范圍

where… like …:可進行模糊查詢,如:

SELECT* from test.scBUS where scBUS.country like concat('%','a1','%')

HAVING子句:允許用戶通過一個簡單的語法完成原本需要通過子查詢才能對GROUP BY語句產 生的分組進行條件過濾的任務,如:

selectsno,sname,stall from student where sage=6 and sex=’男’ group by sno havingstall>167;

join語句:

Hive支持通常的SQL JOIN語句,但是只支持等值連接:

selectdistinct a.sname from student a left join sc b on (a.sno=b.sno);

關于內連接、外連接和半連接:

幾種連接區別簡單概括為:內連接只顯示了倆張表都存在的數據,而外連接則是顯示出所有的數據,其中左連接是左外邊的表輸出完整數據。右外連接是右邊的表輸出完整數據,全外連接就是兩張表的所有行全部輸出。做半連接用來補充hive相對于mysql等語句缺失的in/exists這樣的子句,就用left semi join代替,和left join的區別在于右邊的表數據不會加載進結果;

Orderby 和sortby:ORDER BY會對查詢結果集執行一個全局排序,所有的數據都通過一個reducer進行處理;SORT BY,其只會在每個reducer中對數據進行排序,也就是執行一個局部排序過程,生產中可以和DISTRIBUTE BY一起用,實現分區并排序。

以上是“hive需要掌握哪些基礎知識”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女