天天看點

Hadoop之資料倉庫Hive1.Hive介紹2.Hive的部署3.Hive的操作

文章目錄

  • 1.Hive介紹
    • 1.1 Hive是什麼
    • 1.2 Hive産生背景
    • 1.3 使用Hive的好處
    • 1.4 Hive的架構
    • 1.5 Hive的資料結構
  • 2.Hive的部署
    • 2.1 下載下傳并安裝
    • 2.2 配置Hive到環境變量
    • 2.3 修改配置檔案
  • 3.Hive的操作
    • 3.1 資料庫操作
    • 3.2 表操作
    • 3.3 資料的操作
      • 3.3.1 導入資料
        • 3.3.1.1 LOAD
        • 3.3.1.1 Insert
      • 3.3.2 導出資料
      • 3.3.3 簡單查詢
      • 3.3.4 複雜查詢
      • 3.3.4 執行計劃
    • 3.4 外部表和内部表的差別

1.Hive介紹

1.1 Hive是什麼

  • 由 Facebook 實作并開源
  • Hive 是在 Hadoop 分布式檔案系統 (HDFS) 之上開發的 ETL 和資料倉庫工具
  • Hive 提供寫 SQL 的方式對存儲在 Hadoop 叢集裡面的資料進行清洗、加工,生成新的資料并存儲到 Hadoop 叢集當中
  • Hive隻是個用戶端,不涉及叢集的概念

1.2 Hive産生背景

  • Mapreduce 程式設計不友善

    沒學過java的怎麼辦?運作Mapreduce程式也很麻煩,打包運作等等,Hive實作同樣的功能就更容易

  • 傳統關系型資料庫人員的需求

    他們sql寫的很好,大資料如果用不上sql,豈不很可惜,基于 SQL 的資料開發方式,讓 Hive 成為了大資料處理領域最重要的一項技術,對于大資料開發技術來說,SQL 是一等公民

1.3 使用Hive的好處

  • 簡單,容易上手

    寫sql的方式實作,并且文法和sql類似

  • 統一進制資料管理

    Hive是基于Hadoop的,是以資料都是用HDFS存儲的,都是一行一行的字元串,沒有關系型資料庫的表,列啊,字段類型之類的中繼資料概念。Hive會有這些中繼資料,并且把它們存儲在Mysql中

  • 底層支援多種執行引擎

    Mapreduce,Tez,Spark。可以讓Hive sql 語句運作在不同的模式中,比如離線線上

1.4 Hive的架構

Hadoop之資料倉庫Hive1.Hive介紹2.Hive的部署3.Hive的操作

Hive 主要由三個部分組成:Clients(用戶端)、Serverices(服務)、Storage and compute(存儲和計算)

  • Clients(用戶端):Hive 為與不同類型的應用程式的通信提供了不同的驅動程式。Hive clinets 可以支援 Thrift、JDBC、ODBC 協定與 Hive services 進行通信
  • Serverices(服務):Clients 與 Hive 的互動通過 Hive Services 執行。CLI 是指令行界面,充當 DDL(資料定義語言)操作的 Hive 服務。Serverices 核心的子產品是 Driver(驅動程式)
  • Hive Services、CLI、Hive web Interface 都通過 Driver(驅動程式)對中繼資料、檔案系統進行計算和處理
  • Storage and compute(存儲和計算):Hive 的中繼資料存儲在中繼資料資料庫中,中繼資料資料庫支援 Mysql 等多種類型。Hive 的查詢結果和資料存儲在 Hadoop 中
  • 1.5 Hive的資料結構

Hive 的存儲結構包括資料庫、表、視圖、分區和表資料

  • database:在 HDFS 中表現為 ${hive.metastore.warehouse.dir} 目錄下一個檔案夾
  • table:在 HDFS 中表現所屬 database 目錄下一個檔案夾
  • external table:與 table 類似,不過其資料存放位置可以指定任意 HDFS 目錄路徑
  • partition:在 HDFS 中表現為 table 目錄下的子目錄
  • bucket:在 HDFS 中表現為同一個表目錄或者分區目錄下根據某個字段的值進行 hash 散列之後的多個檔案
  • view:與傳統資料庫類似,隻讀,基于基本表建立

2.Hive的部署

Hive的中繼資料管理依賴Mysql資料,是以得提前安裝一個Mysql

2.1 下載下傳并安裝

Hive隻是個用戶端,是以得有安裝包,下載下傳需要的版本的Hive安裝包

Hadoop之資料倉庫Hive1.Hive介紹2.Hive的部署3.Hive的操作

解壓并指定目錄

tar -zxvf hive-1.1.0-cdh5.15.1.tar.gz -C ~/app/
           

2.2 配置Hive到環境變量

vi ~/.bash_profile
           
Hadoop之資料倉庫Hive1.Hive介紹2.Hive的部署3.Hive的操作
Hadoop之資料倉庫Hive1.Hive介紹2.Hive的部署3.Hive的操作

2.3 修改配置檔案

  • hive-env.sh

    主要配置了Hadoop目錄,如果Hadoop也加入了環境變量,那麼不用修改這個配置檔案

  • hive-site.xml

    主要配置了Mysql的資訊,copy mysql的驅動到Hive的lib檔案夾下。

    Hadoop之資料倉庫Hive1.Hive介紹2.Hive的部署3.Hive的操作
    從上到下分别是資料庫名,驅動名,資料庫使用者名和密碼
    Hadoop之資料倉庫Hive1.Hive介紹2.Hive的部署3.Hive的操作

3.Hive的操作

Hive文檔連結:https://cwiki.apache.org/confluence/display/Hive

3.1 資料庫操作

Hive Data Definition Language

DDL 說明文檔連結:https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL

對資料的建立,修改,删除,檢視,文檔上寫的比較詳細,直接看官方文檔就行了

  • 指令視窗顯示目前是哪個資料庫
set hive.cli.print.current.db=true
           
Hadoop之資料倉庫Hive1.Hive介紹2.Hive的部署3.Hive的操作
  • 清屏

3.2 表操作

增删查改也可以看官方文檔,建表示例:

CREATE TABLE emp(
empno int COMMENT '員工編号',
ename string COMMENT '員工名稱',
job string COMMENT '工作崗位',
mgr int,
hiredate string,
sal double,
comm double,
deptno int
) 
COMMENT '員工資訊表'
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t';
           

常用指令:

  • 檢視表 show tables;
  • 檢視表資訊 desc emp
  • 檢視表資訊-詳情 desc extended emp;
  • 檢視表資訊-格式化的詳情 desc formatted emp;
  • 向表裡加載資料 LOAD DATA LOCAL INPATH ‘/home/hadoop/data/emp.txt’ OVERWRITE INTO TABLE emp;
  • 修改表名 alter table car rename to car_new;
  • 增加一個字段 alter table car add columns (count int);
  • 修改一個字段的定義 alter table car change name name_new string;
  • 添加一個分區 alter table car add partition(name=“benchi”);

3.3 資料的操作

文檔位址:https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DML

3.3.1 導入資料

3.3.1.1 LOAD

LOCAL:本地系統,如果沒有local那麼就是指的HDFS的路徑

OVERWRITE:是否資料覆寫,如果沒有那麼就是資料追加

3.3.1.1 Insert

INSERT OVERWRITE TABLE tablename1 [PARTITION (partcol1=val1, partcol2=val2 …) [IF NOT EXISTS]] select_statement1 FROM from_statement;

INSERT INTO TABLE tablename1 [PARTITION (partcol1=val1, partcol2=val2 …)] select_statement1 FROM from_statement;

Hadoop之資料倉庫Hive1.Hive介紹2.Hive的部署3.Hive的操作

3.3.2 導出資料

3.3.3 簡單查詢

完全類似于 sql語句

3.3.4 複雜查詢

函數,分組,聚合,join 也完全類似于 sql語句

3.3.4 執行計劃

展示Hql語句執行的過程

EXPLAIN [EXTENDED|CBO|AST|DEPENDENCY|AUTHORIZATION|LOCKS|VECTORIZATION|ANALYZE] query
           

3.4 外部表和内部表的差別

  • MANAGED_TABLE,内部表

    删除表:HDFS上的資料被删除 & Meta也被删除

  • EXTERNAL_TABLE,外部表

    HDFS上的資料不被删除 & Meta被删除

繼續閱讀