柚子快報激活碼778899分享:數據倉庫技術及應用
柚子快報激活碼778899分享:數據倉庫技術及應用
1.Hive入門
主要內容:
數據倉庫的與傳統(tǒng)數據庫不同:
數據倉庫的數據規(guī)模大,數據更穩(wěn)定
Hive真實數據存儲格式:
TEXTFILE,文本文件
SEQUENCEFILE,二進制序列化過的文本存儲格式
RCFILE,面向列的數據存儲格式
ORCFILE,對RCFILE的優(yōu)化格式
Hive數據單元:
數據庫
表:有外部表和內部表,內部表由hive管理,外部表不由hive管理
分區(qū):用于提高查詢效率
分桶
Hive基本數據類型:
整數:TINYING,SMALLINT,INT,BIGINT
小數:F.LOAT,DOUBLE,DECIMAL;
文本:STRING,CHAR,VARCHAR
布爾:BOOLEAN
二進制:BINARY
時間:DATE,TIMESTAMP,INTERVAL(DATE:日期.TIMESETAMP:納秒級別的時間戳,INTERVAL:時間間隔)
Hive復雜數據類型:
ARRAY:同類型變量
MAP:鍵值對
STRUCT:一組有名字的任意基本類型字段
UNIONTYPE:類型JAVA泛型,任一時刻只有一種類型生效
Hive分區(qū)和分桶:
分區(qū)的目的:提高查詢性能
分桶的目的:提高分布式查詢的效率
分區(qū):PARTITIONED BY
分桶:CLUSTERED BY
Hive元數據:
DBS:存儲Hive中所有數據庫的基本信息
DATABASE_PARAMS:該表存儲數據庫的相關參數
TBLS:存儲Hive表、視圖、索引表的基本信息
TABLE_PARAMS:該表存儲表/視圖的屬性信息
Hive數據連接
內關聯(lián)([inner] join):只返回關聯(lián)上的結果
左關聯(lián)(left [outer] join):以左表為主
右關聯(lián)(right [outer] join):以右表為主
全關聯(lián)(full [outer] join):以兩個表的記錄為基準,返回兩個表的記錄去重之和,關聯(lián)不上的字段為NULL
Hive數據排序
order by(全局排序) order by會對輸入做全局排序,因此只有一個Reducer(多個Reducer無法保證全局有序),然而只有一個reducer,會導致當輸入規(guī)模較大時,消耗較長的計算時間 降序:desc 升序:asc 不需要指定,默認是升序
sort by(分區(qū)內排序) 不是全局排序,其在數據進入reducer前完成排序,也就是說它會在數據進入reduce之前為每個reducer都產生一個排序后的文件。因此,如果用sort by進行排序,并且設置mapreduce.job.reduces>1,則sort by只保證每個reducer的輸出有序,不保證全局有序。
distribute by(數據分發(fā)) distribute by是控制在map端如何拆分數據給reduce端的。類似于MapReduce中分區(qū)partationer對數據進行分區(qū) hive會根據distribute by后面列,將數據分發(fā)給對應的reducer,默認是采用hash算法+取余數的方式。
cluster by cluster by除了具有distribute by的功能外還兼具sort by的功能。但是排序只能是升序排序,不能指定排序規(guī)則為ASC或者DESC 當分區(qū)字段和排序字段相同cluster by可以簡化distribute by+sort by 的SQL 寫法,也就是說當distribute by和sort by 字段相同時,可以使用cluster by 代替distribute by和sort by
hive窗口函數
窗口函數指定了函數工作的數據窗口大小(當前行的上下多少行),這個數據窗口大小可能會隨著行的變化而變化
窗口函數最重要的關鍵字是 partition by 和 order by。 具體語法:over (partition by xxx order by xxx)
row_number() over():對相等的值不進行區(qū)分 rank() over():相等的值排名相同,序號從1到n不連續(xù) dense_rank() over():對相等的值排名相同,序號從1到n連續(xù) ntile(n) over():可以看作是把有序的數據集合平均分配到指定的數據n的桶中,將桶號分配給每一行,排序對應的數據為桶號 paercent_rank():排名計算公式:(current rank - 1)/(total number of rows -1),說明:分組內當前行的rank值-1/分組內總行數-1 cume_dist:如按升序排列,則統(tǒng)計;小于等于當前值的行數/總行數(number of rows ≤ current row)/(total number of rows),如果是降序比例,則統(tǒng)計:大于等于當前值的行數/總行數 lead(value_expr[,offset[default]]):用于統(tǒng)計窗口內往下第n行值 lag(value_expr[,offset[,default]]):與lead相反,用于統(tǒng)計窗口內往上第n行值
柚子快報激活碼778899分享:數據倉庫技術及應用
精彩鏈接
本文內容根據網絡資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點和立場。
轉載請注明,如有侵權,聯(lián)系刪除。