好程式設計師大資料培訓分享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 使用者介面
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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 好程式設計師雲端計算培訓分享msyql知識點講解程式設計師
- 好程式設計師Java培訓分享Java基礎知識總結程式設計師Java
- 好程式設計師web前端培訓分享CSS基礎知識學習程式設計師Web前端CSS
- 好程式設計師大資料培訓分享Spark需要什麼基礎?程式設計師大資料Spark
- 好程式設計師大資料培訓分享之hive儲存過程程式設計師大資料Hive儲存過程
- 好程式設計師大資料培訓分享如何區分Hive與HBase程式設計師大資料Hive
- 好程式設計師Python培訓分享Python入門基礎知識程式設計師Python
- 好程式設計師web前端培訓分享面試題Session、Cookie基礎知識程式設計師Web前端面試題SessionCookie
- 好程式設計師大資料培訓分享之hive常用內部函式程式設計師大資料Hive函式
- 好程式設計師大資料培訓分享MapReduce理解程式設計師大資料
- 好程式設計師大資料培訓分享之hive常見自定義函式程式設計師大資料Hive函式
- 好程式設計師大資料培訓分享HDFS讀流程程式設計師大資料
- 好程式設計師大資料培訓分享spark之Scala程式設計師大資料Spark
- 好程式設計師大資料培訓分享大資料還學嗎?程式設計師大資料
- 好程式設計師大資料培訓分享大資料的應用程式設計師大資料
- 好程式設計師大資料培訓分享mysql資料型別程式設計師大資料MySql資料型別
- 好程式設計師web前端培訓分享JavaScript相關知識程式設計師Web前端JavaScript
- 好程式設計師Java培訓分享JDK工具條知識點程式設計師JavaJDK
- 好程式設計師大資料培訓分享大資料面試寶典一程式設計師大資料面試
- 好程式設計師大資料培訓分享大資料面試寶典二程式設計師大資料面試
- 好程式設計師大資料培訓分享大資料面試寶典三程式設計師大資料面試
- 好程式設計師大資料培訓分享大資料面試寶典四程式設計師大資料面試
- 好程式設計師大資料培訓分享大資料面試寶典六程式設計師大資料面試
- 好程式設計師大資料培訓分享大資料的影響一程式設計師大資料
- 好程式設計師大資料培訓分享大資料兩大核心技術程式設計師大資料
- 好程式設計師Java培訓分享20個Java程式設計師基礎題程式設計師Java
- 好程式設計師HTML5培訓教程-html和css基礎知識程式設計師HTMLCSS
- 好程式設計師大資料培訓分享大資料就業方向有哪些?程式設計師大資料就業
- 好程式設計師web前端培訓分享JavaScript基礎語法程式設計師Web前端JavaScript
- 好程式設計師Python培訓分享基礎入門Django程式設計師PythonDjango
- 好程式設計師大資料培訓分享:Hadoop叢集同步程式設計師大資料Hadoop
- 好程式設計師大資料培訓分享Spark技術總結程式設計師大資料Spark
- 好程式設計師大資料培訓分享MySQL8.0新特性程式設計師大資料MySql
- 好程式設計師大資料培訓分享Hive的靜態分割槽與動態分割槽程式設計師大資料Hive
- 好程式設計師web前端培訓分享如何講清楚Promise?程式設計師Web前端Promise
- 好程式設計師Web前端培訓分享如何講清楚this指向?程式設計師Web前端
- 好程式設計師Java培訓分享學Java需要什麼基礎?程式設計師Java
- 好程式設計師Java培訓分享學習Java需要哪些基礎程式設計師Java