大資料hive個人學習總結

2021-10-04 23:06:09 字數 3136 閱讀 1683

hive是乙個可以把資料用sql處理的工具,資料儲存再hdfs上,底層處理是用mr,通過用sql的方式通過mr獲得需要的資料,執行程式執行再yarn上。

資料儲存不同,hive資料儲存到hdfs上,用mr處理,mysql儲存在磁碟上,可以把hive看成對hdfs上的資料處理的客戶端工具,除了語言有一樣的地方再無共同之處。

mysql儲存hive元資料可以啟動多個hive客戶端。

外部表不能刪除表的原始資料,只可以刪元資料。內部表會刪除原始資料,另外內部表不能清空表。

1、排序:

order by 全域性排序

sort by 每個reduce排序

distribute by把map的某個欄位歸到乙個reduce中,通常和sort by一起用乙個字段分割槽乙個字段排序

cluster by 當sort by和distributeby欄位一樣時使用。

2、分桶

clustered by 根據某個欄位分桶,建立分桶表

分桶一般用於抽樣獲取資料

3、建立表字段說明

create table 建立乙個指定名的table

external 建立外部表

comment 為表和列新增注釋

partitioned by 為表根據字段分割槽

clustered by 為表根據欄位分桶

sorted by 對桶中乙個或多個列排序

4、分割槽

分割槽對應了hdfs上不同的資料夾,但資料都在一張hive表裡,hive中的分割槽就是分目錄

5、其他函式

nvl 給null的字段賦值nvl(null,value)

case when :

select 

dept_id,

sum(case *** when '男' then 1 else 0 end) male_count,

sum(case *** when '女' then 1 else 0 end) female_count

from

emp_***

group by

dept_id;

行轉列:

concat(stringa,stringb) 行轉列,可把多行資料合成一列

concat_ws(separator, str1, str2,...) 行轉列,每行資料按separator隔開

列轉行explode(col)將hive表中array或map拆分成多行

lateral view 

用法:lateral view udtf(expression) tablealias as columnalias

解釋:用於和split, explode等udtf一起使用,它能夠將一列資料拆成多行資料,在此基礎上可以對拆分後的資料進行聚合

select

movie,

category_name

from

movie_info lateral view explode(category) table_tmp as category_name;

movie category

《疑犯追蹤》 懸疑,動作,科幻,劇情

《lie to me》 懸疑,警匪,動作,心理,劇情

《戰狼2》 戰爭,動作,災難

《疑犯追蹤》 懸疑

《疑犯追蹤》 動作

《疑犯追蹤》 科幻

《疑犯追蹤》 劇情

《lie to me》 懸疑

《lie to me》 警匪

《lie to me》 動作

《lie to me》 心理

《lie to me》 劇情

《戰狼2》 戰爭

《戰狼2》 動作

《戰狼2》 災難

開窗函式

over()指定使用視窗函式

current now 指定當前行

n preceding 往前n行資料

n following 往後n行資料

unbounded 起點 unbounded preceding 表示從前面的起點,unbounded following表示後面的終點

business

name orderdate cost

jack,2017-01-01,10

tony,2017-01-02,15

jack,2017-02-03,23

tony,2017-01-04,29

jack,2017-01-05,46

jack,2017-04-06,42

tony,2017-01-07,50

jack,2017-01-08,55

mart,2017-04-08,62

mart,2017-04-09,68

neil,2017-05-10,12

mart,2017-04-11,75

neil,2017-06-12,80

mart,2017-04-13,94

(1)查詢在2023年4月份購買過的顧客及總人數

select name,count(name) over() from business where substring(orderdate,1,7) ='2017-04' group by name

(2)查詢顧客的購買明細及月購買總額

select name,orderdate,sum(cost) over(partition by month(orderdate)) from business

rank

rank() 排序相同時會重複,總數不會變

dense_rank() 排序相同時會重複,總數會減少

row_number() 會根據順序計算

自定義函式

1)udf(user-defined-function)

一進一出

(2)udaf(user-defined aggregation function)

聚集函式,多進一出

類似於:count/max/min

(3)udtf(user-defined table-generating functions)

一進多出

如lateral view explore()

個人學習總結

組 groupadd 建立新群組 groudel 刪除組groudmod 修改組的資訊 cat etc group 檢視組的資訊 使用者 group 換成user cat etc passwd 檢視使用者的資訊 ps 顯示當前程序資訊 常用引數 e 和 aux kill 結束程序 常用引數 9 ki...

個人學習總結

一 請根據自己的學習實踐回答自己當初提的問題,並提出乙個新的問題。1.就在第一章的概論裡作者就推出了 軟體 程式 軟體工程 很明顯,開發乙個軟體,軟體工程就處於一種舉足輕重的地位,程式加上軟體工程才能使乙個軟體完整。那軟體工程它有哪些驚奇的功能呢?答 軟體工程主要是降低軟體系統的複雜性 提高其可控性...

HTML個人學習總結 1

作為乙個計算機零基礎的小白,到今天為止自學已有90天。是時候開始對這段時間所學內容進行總結 歸納了。web前端知識的總結自然是要從html的知識點開始。html全稱hyper text markup language,即超文字標記語言,它只是一種標記語言,並不算程式語言。我們通過html來編寫htm...