好程式設計師大資料培訓分享Hive基礎知識講解

好程式設計師發表於2020-08-05

   今天 好程式設計師 大資料培訓老師給大家技術介紹一下關於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 使用者介面

   1 HiveCLI HiveCommandLine Hive 命令列),客戶端可以直接在命令列模式下進行操作

   2 HWI HiveWebInterface HiveWeb 介面), Hive 提供了更直觀的 Web 介面

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

   Hive 常用檔案格式:

   Textfile :預設格式,資料不做壓縮,磁碟開銷大,資料解析開銷大;

   SEQUENCEFILE SequenceFile HadoopAPI 提供的一種二進位制檔案支援,其具有使用方便、可分割、可壓縮的特點;

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

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

   Hive 資料匯入匯出

   Hive 表中的資料,同時支援從本地資料匯入、從其他表匯入資料、匯出資料到本地檔案系統、匯出資料到 HDFS

   Hive 基本語句

   Hive 建表語句基本跟關係型資料庫建表語句相同,區別在於語句尾端指定了列分隔符:

   ROWFORMATDELIMITEDFIELDSTERMINATEDBY ,

   指定了列分隔符為“,”;

   對於分割槽表,會有分割槽欄位的說明:

   PARTITIONEDBY(countrySTRING,stateSTRING)

   country “、” state ”兩個欄位分割槽;

   以及指定儲存檔案的格式:

   STOREDASTEXTFILE

   關於內連線、外連線和半連線:

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

   orderby sortby:

   ORDERBY 會對查詢結果集執行一個全域性排序 , 所有的資料都透過一個 reducer 進行處理 ;SORTBY ,其只會在每個 reducer 中對資料進行排序,也就是執行一個區域性排序過程 , 生產中可以和 DISTRIBUTEBY 一起用,實現分割槽並排序。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69913864/viewspace-2709433/,如需轉載,請註明出處,否則將追究法律責任。

相關文章