天天看點

Hive基礎hive的基本簡介

hive的基本簡介

hive概念:基于hadoop的一個資料倉庫工具,可以将結構化的資料檔案映射為一張資料庫表,并提供類SQL查詢功能。Hive利用HDFS存儲資料,利用mapreduce查詢分析資料,本質是将SQL轉換為mapreduce程式,比直接使用mapreduce開發效率高。

hive的中繼資料存儲:通常存在關系資料庫中,如mysql.hive中将中繼資料存儲在資料庫中,hive的源資料包括表名稱,表的列,表分區,表屬性,其中表屬性(是否為外部表等),表的資料所在目錄等。

hive與傳統DB的差別:

傳統資料庫:OLTP->面向事務操作型處理,就是關系型資料庫mysql,oracle,sqlserver,db2。主要是支援業務,面向業務。

Hive:OLAP->面向分析分析型處理,就是資料倉庫,面對的是曆史資料開展分析。

Hive數倉開發基本流程

  1. 從業務系統擷取資料
  2. 資料存儲
  3. 寫SQL開發需求
  4. 配置排程系統
  5. 導出資料&展示

從業務系統擷取資料的幾種方法

  1. sqoop導入資料庫的資料:sqoop可以在Hive與傳統的資料庫之間進行資料的傳遞,可以将一個關系型資料庫中的資料導進到hadoop的HDFS中,也可以将HDFS的資料導入到關系型資料庫中。
  2. Flume采集文本資料:flume可以将各類型的檔案進行采集,存放入hdfs中。
  3. Ftp檔案伺服器:從檔案伺服器上下載下傳分析所需的源資料(增量資料、全量資料)。

資料存儲的幾種方式:

  1. 資料倉庫分層ods層,dw層,da層。
  2. 源資料ods層:直接引用外圍資料,沒有統一格式,不會直接應用,不利于分析。
  3. 資料倉庫層dw層:來自于ods要經過ETL的過程,格式統一,資料規整。
  4. 資料應用層da層:要去用dw層資料,真正的資料使用者。
  5. 資料集市:滿足特定的部門或使用者的需求,按照多元的方式進行存儲,包括定義次元,需要計算的名額,次元的層次等,生成面向決策分析需求的資料立方體。

hive sql知識點

1、DML&DDL

        DML:資料操縱語言

        DDL:資料定義語言

2、外表和内表

外表:被external修飾,表資料由HDFS管理,表資料的存儲位置由自己指定,删表僅僅會删除中繼資料,HDFS上的檔案并不會被删除。

内表:沒有external修飾,表資料由hive自身管理,表資料存儲的位置預設,删除表會直接删除中繼資料以及存儲資料。

3、分區、分桶

分區:partation by

靜态分區:建立分區表,加載資料

建立分區表:create table par_tap(name string,nation string)partition by (sex string) row format delimited fields terminated by ‘,’;

加載資料:load data local inpath’/home/Hadoop/files/par_tab.txt’into table par_tap partition by (sex=’man’);

動态分區:開啟動态分區功能,加載資料

開啟:set hive.exec.dynamic.partation=true;

加載資料:insert overwrite table par_dnm partition(sex=’man’,dt)select name,nation,dt from par_tap;

分桶:clustered by(字段) into num_buckets

分桶功能預設不開啟,需要手動開啟:set hive.enforce.bucketing = true;分幾個桶,也需要自己指定:set mapreduce.job.reduces = N;導入資料insert+select

4、UDF

使用者自定義函數

繼續閱讀