數據倉庫工具之hive(1)

1.數據倉庫介紹

1.1 數據倉庫的基本概念

英文名稱爲Data Warehouse,可簡寫爲DW或DWH。數據倉庫的目的是構建面向分析的集成化數據環境,爲企業提供決策支持(Decision Support)。它出於分析性報告和決策支持目的而創建。數據倉庫本身並不“生產”任何數據,同時自身也不需要“消費”任何的數據,數據來源於外部,並且開放給外部應用,這也是爲什麼叫“倉庫”,而不叫“工廠”的原因。

1.2 數據倉庫的主要特徵

數據倉庫是面向主題的(Subject-Oriented)、集成的(Integrated)、非易失的(Non-Volatile)和時變的(Time-Variant)數據集合,用以支持管理決策。

  • 面向主題:一般都是有一定的目的進行構建數據倉庫
  • 集成性:將所有用到的數據都會集成到一起去
  • 非易失性:數據倉庫裏面的數據一般都不會改變 ,數據倉庫是用於正確的記錄已經發生的事實,數據倉庫中存儲的是過去的數據
  • 時變性:隨着時間的發展,數據倉庫分析的手段也會改變

1.3 數據倉庫與數據庫區別

數據庫與數據倉庫的區別實際講的是 OLTP 與 OLAP 的區別:

  • 操作型處理,叫聯機事務處理OLTP(On-Line Transaction Processing,),也可以稱面向交易的處理系統,它是針對具體業務在數據庫聯機的日常操作,通常對少數記錄進行查詢、修改。用戶較爲關心操作的響應時間、數據的安全性、完整性和併發支持的用戶數等問題。傳統的數據庫系統作爲數據管理的主要手段,主要用於操作型處理。

  • 分析型處理,叫聯機分析處理 OLAP(On-Line Analytical Processing)一般針對某些主題的歷史數據進行分析,支持管理決策。

  • 首先要明白,數據倉庫的出現,並不是要取代數據庫. 數據庫是面向事務的設計,數據倉庫是面向主題設計的。數據庫一般存儲業務數據,數據倉庫存儲的一般是歷史數據。

  • 數據庫設計是儘量避免冗餘,一般針對某一業務應用進行設計,比如一張簡單的User表,記錄用戶名、密碼等簡單數據即可,符合業務應用,但是不符合分析。數據倉庫在設計是有意引入冗餘,依照分析需求,分析維度、分析指標進行設計。

  • 數據庫是爲捕獲數據而設計,數據倉庫是爲分析數據而設計。

以銀行業務爲例。數據庫是事務系統的數據平臺,客戶在銀行做的每筆交易都會寫入數據庫,被記錄下來,這裏,可以簡單地理解爲用數據庫記賬。數據倉庫是分析系統的數據平臺,它從事務系統獲取數據,並做彙總、加工,爲決策者提供決策的依據。比如,某銀行某分行一個月發生多少交易,該分行當前存款餘額是多少。如果存款又多,消費交易又多,那麼該地區就有必要設立ATM了。顯然,銀行的交易量是巨大的,通常以百萬甚至千萬次來計算。事務系統是實時的,這就要求時效性,客戶存一筆錢需要幾十秒是無法忍受的,這就要求數據庫只能存儲很短一段時間的數據。而分析系統是事後的,它要提供關注時間段內所有的有效數據。這些數據是海量的,彙總計算起來也要慢一些,但是,只要能夠提供有效的分析數據就達到目的了。

數據倉庫,是在數據庫已經大量存在的情況下,爲了進一步挖掘數據資源、爲了決策需要而產生的,它決不是所謂的“大型數據庫”。

1.4 數據倉庫分層架構

按照數據流入流出的過程,數據倉庫架構可分爲三層——源數據數據倉庫數據應用。 數據倉庫的數據來源於不同的數據源,並提供多樣的數據應用,數據自下而上流入數據倉庫後向上層開放應用,而數據倉庫只是中間集成化數據管理的一個平臺。

  • 源數據層(ODS):此層數據無任何更改,直接沿用外圍系統數據結構和數據,不對外開放;爲臨時存儲層,是接口數據的臨時存儲區域,爲後一步的數據處理做準備,總結爲用來保管我們的原始數據的.

  • 數據倉庫層(DW):DW層的數據應該是一致的、準確的、乾淨的數據,即對源數據進行了清洗(去除了雜質)後的數據。主要是用於面向數據分析的,大部分的工作,都是在這一層,寫sql

  • 數據展示層(DA或APP):前端應用直接讀取的數據源;根據報表、專題分析需求而計算生成的數據。數據的報表展示

數據倉庫從各數據源獲取數據及在數據倉庫內的數據轉換和流動都可以認爲是ETL(抽取Extra, 轉化Transfer, 裝載Load)的過程,ETL是數據倉庫的流水線,也可以認爲是數據倉庫的血液,它維繫着數據倉庫中數據的新陳代謝,而數據倉庫日常的管理和維護工作的大部分精力就是保持ETL的正常和穩定。

那爲什麼要對數據倉庫分層?

  • 用空間換時間,通過大量的預處理來提升應用系統的用戶體驗(效率),因此數據倉庫會存在大量冗餘的數據;不分層的話,如果源業務系統的業務規則發生變化將會影響整個數據清洗過程,工作量巨大。

  • 通過數據分層管理可以簡化數據清洗的過程,因爲把原來一步的工作分到了多個步驟去完成,相當於把一個複雜的工作拆成了多個簡單的工作,把一個大的黑盒變成了一個白盒,每一層的處理邏輯都相對簡單和容易理解,這樣我們比較容易保證每一個步驟的正確性,當數據發生錯誤的時候,往往我們只需要局部調整某個步驟即可。

  • 總結:主要是爲了保證每一層處理自己的事情,簡化處理的邏輯,達到解耦的功能

2. hive介紹

2.1 什麼hive

Hive是基於Hadoop的一個數據倉庫工具可以將結構化的數據文件映射爲一張數據庫表,並提供類SQL查詢功能。其本質是將SQL轉換爲MapReduce的任務進行運算,底層由HDFS來提供數據的存儲,說白了hive可以理解爲一個將SQL轉換爲MapReduce的任務的工具,甚至更進一步可以說hive就是一個MapReduce的客戶端

  • 結構化的數據:類似於mysql當中的一張表,數據字段一定,數據類型也一定
    在這裏插入圖片描述

2.2 Hive與數據庫的區別

  • Hive 具有 SQL 數據庫的外表,但應用場景完全不同。
  • Hive 只適合用來做海量離線數據統計分析,也就是數據倉庫
    在這裏插入圖片描述

2.3 Hive的優缺點

  • 優點:

    • 操作接口採用類SQL語法,提供快速開發的能力(簡單、容易上手)

    • 避免了寫MapReduce程序,減少開發人員的學習成本

    • Hive支持用戶自定義UDF函數,用戶可以根據自己的需求來實現自己的函數

  • 缺點:

    • 早期Hive 不支持記錄級別的增刪改操作, 增刪改對hive意義不大,但是現在都支持,因爲實際工作中基本用不到增刪改.因爲數據倉庫的主要的職責就是正確的記錄既定的已經發生的事實,已經發生的事實,不能更改了
    • Hive 的查詢延遲很嚴重,因爲底層是運行MR任務
    • Hive 不支持事務
    • 結構化的數據可以用hive,非結構化的數據需要使用MR編程解決

2.4 Hive架構原理

在這裏插入圖片描述

  • 1、用戶接口:Client
  • CLI(hive shell或者hiveserver2)、JDBC/ODBC(java訪問hive)、WEBUI(瀏覽器訪問hive)
  • 2、元數據:Metastore

    • 元數據包括:表名、表所屬的數據庫(默認是default)、表的擁有者、列/分區字段、表的類型(是否是外部表)、表的數據所在目錄等;

      • 默認存儲在自帶的derby數據庫中,推薦使用MySQL存儲Metastore
  • 3、Hadoop集羣

    • 使用HDFS進行存儲,使用MapReduce進行計算。
  • 4、Driver:驅動器

    • 解析器(SQL Parser)
      • 將SQL字符串轉換成抽象語法樹AST
      • 對AST進行語法分析,比如表是否存在、字段是否存在、SQL語義是否有誤
      • 主要就是用於解析sql語法
    • 編譯器(Physical Plan):將AST編譯生成邏輯執行計劃,將解析之後的sql語法進行編譯成爲MR的任務
    • 優化器(Query Optimizer):對邏輯執行計劃進行優化,有一定的優化功能,自動的會對我們寫的sql語句進行調優,但是調優的功能有限的
    • 執行器(Execution):把邏輯執行計劃轉換成可以運行的物理計劃。對於Hive來說默認就是mapreduce任務.提交mr的任務到yarn上面去執行的
      在這裏插入圖片描述

3. Hive的安裝部署

​ 注意hive就是一個構建數據倉庫的工具,可以看成是MR的一個客戶端,只需要在一臺服務器上安裝就可以了,不需要在多臺服務器上安裝

  cd /zsc/install/hive-1.1.0-cdh5.14.2/conf/
  mv  hive-env.sh.template hive-env.sh 
  vim hive-env.sh    
      #配置HADOOP_HOME路徑
  export HADOOP_HOME=/zsc/install/hadoop-2.6.0-cdh5.14.2/
      #配置HIVE_CONF_DIR路徑
  export HIVE_CONF_DIR=/zsc/install/hive-1.1.0-cdh5.14.2/conf
  • vim hive-site.xml
      <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
      <configuration>
              <property>
                      <name>javax.jdo.option.ConnectionURL</name>
                      <value>jdbc:mysql://node03:3306/hive?createDatabaseIfNotExist=true&amp;characterEncoding=latin1&amp;useSSL=false</value>
              </property>
      
              <property>
                      <name>javax.jdo.option.ConnectionDriverName</name>
                      <value>com.mysql.jdbc.Driver</value>
              </property>
              <property>
                      <name>javax.jdo.option.ConnectionUserName</name>
                      <value>root</value>
              </property>
              <property>
                      <name>javax.jdo.option.ConnectionPassword</name>
                      <value>123456</value>
              </property>
              <property>
                      <name>hive.cli.print.current.db</name>
                      <value>true</value>
              </property>
              <property>
                      <name>hive.cli.print.header</name>
                  <value>true</value>
              </property>
          <!--配置hiveserver2啓動在那臺機器上-->
          <property>
                      <name>hive.server2.thrift.bind.host</name>
                      <value>node03</value>
              </property>
      </configuration>
  • 修改hive的日誌配置文件路徑,便於我們排查hive出現的錯誤問題

  • node03執行以下命令,定義hive的日誌文件存放路徑

    mkdir -p /zsc/install/hive-1.1.0-cdh5.14.2/logs/
    cd /zsc/install/hive-1.1.0-cdh5.14.2/conf/
    mv hive-log4j.properties.template hive-log4j.properties
    vim hive-log4j.properties
    
    #更改以下內容,設置我們的日誌文件存放的路徑
    hive.log.dir=/zsc/install/hive-1.1.0-cdh5.14.2/logs/
    
  • 還需要將mysql的驅動包上傳到hive的lib目錄下. 例如 mysql-connector-java-5.1.38.jar

4. hive的交互方式

  • 首先先啓動hadoop集羣和mysql服務

4.1 Hive shell交互

# 現在已經不推薦使用了 推薦使用hiveserver2方式
cd /zsc/install/hive-1.1.0-cdh5.14.2
bin/hive

4.2 Hive JDBC服務

  • 啓動hiveserver2服務

  • 前臺啓動

cd /zsc/install/hive-1.1.0-cdh5.14.2
bin/hive --service hiveserver2
  • 後臺啓動
cd /zsc/install/hive-1.1.0-cdh5.14.2
nohup  bin/hive --service hiveserver2  &
  • beeline連接hiveserver2,重新開啓一個會話窗口,然後使用beeline連接hive
  cd /zsc/install/hive-1.1.0-cdh5.14.2
  bin/beeline
  beeline> !connect jdbc:hive2://node03:10000

hue可以和hive進行整合,提供web界面寫SQL,主要是藉助這種方式

4.3 Hive的命令

*hive -e sql語句

  • 使用 –e參數來直接執行hql的語句
cd /zsc/install/hive-1.1.0-cdh5.14.2/
bin/hive -e "show databases"
  • hive -f sql文件

    • 使用–f參數執行包含hql語句的文件

    • node03執行以下命令準備hive執行腳本

    cd /zsc/install/
    vim hive.sql
    
    文件內容如下
    create database if not exists myhive;
    
    通過以下命令來執行我們的hive腳本
    cd /zsc/install/hive-1.1.0-cdh5.14.2/
    bin/hive -f /zsc/install/hive.sql 

這種方式主要用於我們開發已經完成,將寫好的hql定時每天去執行

5 Hive的數據類型

5.1 基本數據類型

類型名稱 描述 舉例
boolean true/false true
tinyint 1字節的有符號整數 1
smallint 2字節的有符號整數 1
int 4字節的有符號整數 1
bigint 8字節的有符號整數 1
float 4字節單精度浮點數 1.0
double 8字節單精度浮點數 1.0
string 字符串(不設長度) “abc”
varchar 字符串(1-65355長度,超長截斷) “abc”
timestamp 時間戳 1563157873
date 日期 20190715

5.2 複合數據類型

類型名稱 描述 舉例
array 一組有序的字段,字段類型必須相同 array(元素1,元素2) Array(1,2,3)
map 一組無序的鍵值對 map(k1,v1,k2,v2) Map(‘a’,1,‘b’,2)
struct 一組命名的字段,字段類型可以不同 struct(元素1,元素2) Struct(‘a’,1,2,0)
  • array字段的元素訪問方式:

    • 下標獲取元素,下標從0開始
  • map字段的元素訪問方式

    • 通過鍵獲取值

    • 獲取a這個key對應的value:map[‘a’]

  • struct字段的元素獲取方式

    • 定義一個字段c的類型爲struct{a int;b string}
    • 獲取a和b的值
      • 使用c.a 和c.b 獲取其中的元素值
      • 可以把這種類型看成是一個對象
create table complex(
         col1 array<int>,
         col2 map<string,int>,
         col3 struct<a:string,b:int,c:double>
)

6 Hive的DDL操作

6.1 hive數據庫DDL操作

6.1.1 創建數據庫

hive > create database db_hive;
# 或者
hive > create database if not exists db_hive;
  • 數據庫在HDFS上的默認存儲路徑是/user/hive/warehouse/*.db

6.1.2 顯示所有數據庫

  hive> show databases;

6.1.3 查詢數據庫

hive> show databases like 'db_hive*';

6.1.4 查看數據庫詳情

hive> desc database db_hive;

6.1.5 顯示數據庫詳細信息

hive> desc database extended db_hive;

6.1.6 切換當前數據庫

hive > use db_hive;

6.1.7 刪除數據庫

#刪除爲空的數據庫
hive> drop database db_hive;

#如果刪除的數據庫不存在,最好採用if exists 判斷數據庫是否存在
hive> drop database if exists db_hive;

#如果數據庫中有表存在,這裏需要使用cascade強制刪除數據庫
#實際工作中不要輕易使用刪除語句
hive> drop database if exists db_hive cascade;

6.2 hive表DDL操作

6.2.1 建表語法介紹

CREATE [EXTERNAL] TABLE [IF NOT EXISTS] table_name 
[(col_name data_type [COMMENT col_comment], ...)] 
[COMMENT table_comment] 
[PARTITIONED BY (col_name data_type [COMMENT col_comment], ...)] 分區
[CLUSTERED BY (col_name, col_name, ...) 分桶
[SORTED BY (col_name [ASC|DESC], ...)] INTO num_buckets BUCKETS] 
[ROW FORMAT row_format]  row format delimited fields terminated by “分隔符”
[STORED AS file_format] 
[LOCATION hdfs_path]

官網地址:https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL

6.2.2 字段解釋說明

  • create table :

    • 創建一個指定名字的表
  • EXTERNAL :

    • 創建一個外部表,在建表的同時指定一個指向實際數據的路徑(LOCATION),指定表的數據保存在哪裏
    • 內部表刪除的時候會同步刪除hdfs數據,外部表刪除的時候,不會刪除hdfs數據
  • COMMENT :

    • 爲表和列添加註釋
  • PARTITIONED BY :

    • 創建分區表
  • CLUSTERED BY :

    • 創建分桶表
  • SORTED BY :

    • 按照字段排序,和CLUSTERED BY結合使用
  • ROW FORMAT :

    • 指定每一行中字段的分隔符

    • row format delimited fields terminated by ‘\t’

  • STORED AS :
    • 指定存儲文件類型
    • 常用的存儲文件類型:SEQUENCEFILE(二進制序列文件)、TEXTFILE(文本)、RCFILE(列式存儲格式文件)
    • 如果文件數據是純文本,可以使用STORED AS TEXTFILE。如果數據需要壓縮,使用 STORED AS SEQUENCEFILE
  • LOCATION :

    • 指定表在HDFS上的存儲位置。

6.2.3 創建內部表

  • 1、使用標準的建表語句
use myhive;
#如果不指定分隔符 默認爲\001
create table stu(id int,name string);

# 可以通過insert  into  向hive表當中插入數據,但是不建議工作當中這麼做
# insert into插入一條數據就會產生一個小文件,一個文件就存儲一條數據,會產生大量小文件,一個文件元數據150字節 
insert  into stu(id,name) values(1,"zhangsan");
select * from  stu;
  • 2、查詢建表法
    • 通過AS 查詢語句完成建表:將子查詢的結果存在新表裏,有數據
create table if not exists myhive.stu1 as select id, name from stu;
  • 3、like建表法
    • 根據已經存在的表結構創建表,僅僅會複製表結構
create table if not exists myhive.stu2 like stu;
  • 4、查詢表的類型
hive > desc formatted myhive.stu;
  • 查詢結果 :
    在這裏插入圖片描述

  • 創建內部表並指定字段之間的分隔符,指定文件的存儲格式,以及數據存放的位置

create  table if not exists myhive.stu3(id int ,name string)
row format delimited fields terminated by '\t' stored as textfile location       '/user/stu2';

6.2.4 創建外部表

外部表因爲是指定其他的hdfs路徑的數據加載到表當中來,所以hive表會認爲自己不完全獨佔這份數據,所以刪除hive表的時候,數據仍然存放在hdfs當中,不會刪掉

create external table myhive.teacher (t_id string,t_name string) row format delimited fields terminated by '\t';
  • 創建外部表的時候需要加上**external** 關鍵字
  • location字段可以指定,也可以不指定
    • 指定就是數據存放的具體目錄
    • 不指定就是使用默認目錄 /user/hive/warehouse

向外部表當中加載數據:

我們前面已經看到過通過insert的方式向內部表當中插入數據,外部表也可以通過insert的方式進行插入數據,只不過insert的方式,我們一般都不推薦,實際工作當中我們都是使用load的方式來加載數據到內部表或者外部表

load數據可以從本地文件系統加載或者也可以從hdfs上面的數據進行加載

  • 從本地文件系統加載數據到teacher表當中去,將數據上傳到node03服務器的/zsc/install/hivedatas路徑下面去

    mkdir -p /zsc/install/hivedatas
    #將數據都上傳到/zsc/install/hivedatas路徑下,然後在hive客戶端下執行以下操作
    load data local inpath '/zsc/install/hivedatas/teacher.csv' into table myhive.teacher;
    
  • 從hdfs上面加載文件到teacher表裏面去(將teacher.csv文件上傳到hdfs的/zsc/hdfsload/hivedatas路徑下)

    cd /zsc/install/hivedatas
    hdfs dfs -mkdir -p /zsc/hdfsload/hivedatas
    hdfs dfs -put teacher.csv /zsc/hdfsload/hivedatas
    # 在hive的客戶端當中執行
    # overwrite 表示覆蓋,重複的數據會覆蓋,如果不是重複的數據,繼續追加
    load  data  inpath  '/zsc/hdfsload/hivedatas'  overwrite into table myhive.teacher;
    

6.2.5 內部表與外部表的互相轉換

  • 1、內部錶轉換爲外部表
#將stu內部表改爲外部表
alter table stu set tblproperties('EXTERNAL'='TRUE');
  • 2、外部錶轉換爲內部表
#把emp外部表改爲內部表
alter table teacher set tblproperties('EXTERNAL'='FALSE');

6.2.6 內部表與外部表的區別

  • 1、建表語法的區別

    • 外部表在創建的時候需要加上external關鍵字
  • 2、刪除表之後的區別

    • 內部表刪除後,表的元數據和真實數據都被刪除了
    • 外部表刪除後,僅僅只是把該表的元數據刪除了,真實數據還在,後期還是可以恢復出來

6.2.7 內部表與外部表的使用時機

​內部表由於刪除表的時候會同步刪除HDFS的數據文件,所以確定如果一個表僅僅是你獨佔使用,其他人不適用的時候就可以創建內部表,如果一個表的文件數據,其他人也要使用,那麼就創建外部表

  • 外部表一般使用在數據倉庫的ods層,表示這一份數據,不是我們獨享的,可能很多其他的人都要使用這份數據
  • 內部表就是數據倉庫的dw層,自己創建的數據倉庫層,自己使用,與其他的人無關,想刪除就刪除

6.2.8 hive的分區表

如果hive當中所有的數據都存入到一個文件夾下面,那麼在使用MR計算程序的時候,讀取一整個目錄下面的所有文件來進行計算,就會變得特別慢,因爲數據量太大了,實際工作當中一般都是計算前一天的數據,所以我們只需要將前一天的數據挑出來放到一個文件夾下面即可,專門去計算前一天的數據。這樣就可以使用hive當中的分區表,通過分文件夾的形式,將每一天的數據都分成爲一個文件夾,然後我們計算數據的時候,通過指定前一天的文件夾即可只計算前一天的數據。

在大數據中,最常用的一種思想就是分治,我們可以把大的文件切割劃分成一個個的小的文件,這樣每次操作一個小的文件就會很容易了,同樣的道理,在hive當中也是支持這種思想的,就是我們可以把大的數據,按照每天,或者每小時進行切分成一個個的小的文件,這樣去操作小的文件就會容易得多了
在這裏插入圖片描述

在文件系統上建立文件夾,把表的數據放在不同文件夾下面,加快查詢速度。

  • 創建分區表語法
hive (myhive)> create table score(s_id string,c_id string, s_score int) partitioned by (month string) row format delimited fields terminated by '\t';
  • 創建一個錶帶多個分區
hive (myhive)> create table score2 (s_id string,c_id string, s_score int) partitioned by (year string,month string,day string) row format delimited fields terminated by '\t';
  • 加載數據到分區表當中去
 hive (myhive)>load data  local inpath '/zsc/install/hivedatas/score.csv' into table score partition  (month='201806');
  • 加載數據到多分區表當中去
hive (myhive)> load data local inpath '/zsc/install/hivedatas/score.csv' into table score2 partition(year='2018',month='06',day='01');
  • 查看分區
hive (myhive)> show  partitions  score;
  • 添加一個分區
hive (myhive)> alter table score add partition(month='201805');
  • 同時添加多個分區
hive (myhive)> alter table score add partition(month='201804') partition(month = '201803');

注意:添加分區之後就可以在hdfs文件系統當中看到表下面多了一個文件夾

  • 刪除分區
hive (myhive)> alter table score drop partition(month = '201806');

外部分區表綜合練習:

需求描述:現在有一個文件score.csv文件,裏面有三個字段,分別是s_id string, c_id string,s_score int,字段都是使用 \t進行分割,存放在集羣的這個目錄下/scoredatas/day=20180607,這個文件每天都會生成,存放到對應的日期文件夾下面去,文件別人也需要公用,不能移動。需求,創建hive對應的表,並將數據加載到表中,進行數據統計分析,且刪除表之後,數據不能刪除

  • 將我們的score.csv上傳到node03服務器的/zsc/install/hivedatas目錄下,然後將score.csv文件上傳到HDFS的/zsc/install/hivedatas目錄下去
cd /zsc/install/hivedatas/
hdfs dfs -mkdir -p /scoredatas/day=20180607
hdfs dfs -put score.csv /scoredatas/day=20180607/
  • 創建外部分區表,並指定文件數據存放目錄
hive (myhive)> create external table score4(s_id string, c_id string,s_score int) partitioned by (day string) row format delimited fields terminated by '\t' location '/scoredatas';
  • 進行表的修復,說白了就是建立我們表與我們數據文件之間的一個關係映射
hive (myhive)> msck  repair   table  score4;

修復成功之後即可看到數據已經全部加載到表當中去了

7.其他

  • hive cli命令窗口查看本地文件系統

    • 與操作本地文件系統類似,這裏需要使用 ! (感嘆號),並且最後需要加上 ;(分號)
    • 例如 : !ls /;
  • hive cli命令窗口查看HDFS文件系統

    • 與查看HDFS文件系統類似 : dfs -ls /;
  • hive的底層執行引擎有3種

    • mapreduce(默認)
    • tez(支持DAG作業的計算框架)mr1-->mr2 -->mr3
    • spark(基於內存的分佈式計算框架)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章