扣丁學堂大資料開發之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/4422/viewspace-2815048/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 好程式設計師大資料培訓分享Hive基礎知識講解程式設計師大資料Hive
- 資料庫基礎知識講解資料庫
- 學大資料開發要掌握的基礎知識有哪些?大資料
- 扣丁學堂HTML5開發manifest離線快取示例詳解HTML快取
- 23 大資料之hive(第四部 hive基礎)大資料Hive
- 半導體分立器件基礎知識講解
- 大資料基礎學習-7.Hive-1.1.0大資料Hive
- 大資料分析入門基礎知識學什麼?大資料
- 開發基礎知識
- JAVA基礎知識精華總結(一)Java
- JAVA基礎知識精華總結(二)Java
- 小程式開發之基礎知識(0)
- 蘋果開發基礎知識蘋果
- 資料庫基礎知識資料庫
- mysql資料庫學習基礎知識整理MySql資料庫
- 【大資料開發】Hive——Hive函式大全大資料Hive函式
- 如何學好Python 扣丁學堂Python好學不Python
- JVM學習之JVM基礎知識JVM
- 大資料學習之路——MySQL基礎(一)——MySQL的基礎知識與常見操作大資料MySql
- iOS開發學習筆記:基礎知識之代理模式之老王的故事iOS筆記模式
- Java基礎知識整理之註解Java
- Golang 基礎之併發知識 (三)Golang
- iOS 開發:『Runtime』詳解(一)基礎知識iOS
- 大資料基礎知識全集,大資料愛好者收藏必備大資料
- 前端基礎技術知識講解-面試圖譜前端面試
- 面試圖譜:前端基礎技術知識講解面試前端
- 基礎知識梳理~資料庫資料庫
- 資料庫基礎重要知識資料庫
- GEO資料庫基礎知識資料庫
- 資料結構基礎知識資料結構
- 【編測編學】MySQL資料庫基礎知識MySql資料庫
- 資料庫學習筆記 - MySQL基礎知識資料庫筆記MySql
- 大資料開發之路:hive篇大資料Hive
- 大資料基礎之開發第一個Java程式大資料Java
- Android面試之——數學基礎知識Android面試
- 安卓(Android)開發基礎知識安卓Android
- app,小程式開發基礎知識APP
- 大資料學習之Linux基礎大資料Linux