本文主要分享下hive中日期函式,正規表示式函式,以及排序函式的使用方法和特點。
/* 往前推兩個月 */
cast(add_months(
date
'2020-03-31',-
2)asdate format 'yyyy-dd-mm'
)--2020-01-31
/* 往前推1年*/
cast(
date
'2020-04-01'
-interval
1 years)
--2019-04-01
cast(
date
'2020-02-29'
-interval
1 years)
--結果不會是2019-02-28 而是error
--推薦使用add_months()
cast(add_months(
date
'2020-02-29',-
12)asdate format 'yyyy-dd-mm'
)--2020-02-28
hive中常用的三個函式如下:
日期減n天select date_sub(current_date,2)
select date_sub('2020-03-20',1) --2020-03-19
日期加n天select date_add('2020-03-19',2) --2020-03-21
日期差select datediff('2020-03-22','2020-03-20') --2
hive中正則表達函式有3個
regexp(string,pattern) --返回值 布林型別 true false
主要在where中作篩選條件
select regexp(『ab.ge』,』[0-9]』) --false
同時包含數字和字母的正規表示式:』^(?![0-9]+)[0
−9a−
za−z
].∗?
)[0-9a-za-z].*?
)[0−9a
−za−
z].∗
?』regexp_extract(string,pattern,int index) --返回值 string
int index 取值為[0-n],n不大於正則項pattern的組成個數,正則項由多部分組合每部分在()內包含。ps: index = 0返回與符合正則的整個原表示式 ,index預設等於1 ;
`
select regexp_extract(
'6a9d0b'
,'[0-9a-za-z]+',0
)`-- 返回 6a9d0b
index 必須且只能設定為0 預設是1 會報錯 ,因為正則項pattern是乙個整體,不是幾個部分組成;
–』([0-9]+)(.*?)([0-9]+)』 這個正則項就是三部分組成 第一部分是數字([0-9]+) 第二部分是字元的貪婪匹配,第三部分是字母
--取滿足正則項的整體字串
select regexp_extract(
'["84745554","asdd"]'
,'([0-9]+)(.*?)([a-za-z]+)',0
);--84745554","asdd
--取滿足正則項的第一部分子字串
select regexp_extract(
'["84745554","asdd"]'
,'([0-9]+)(.*?)([a-za-z]+)',1
);----84745554
--取滿足正則項的第二部分子字串
select regexp_extract(
'["84745554","asdd"]'
,'([0-9]+)(.*?)([a-za-z]+)',2
);--","
--取滿足正則項的第三部分子字串
select regexp_extract(
'["84745554","asdd"]'
,'([0-9]+)(.*?)([a-za-z]+)',3
);--asdd
主要在select語句中篩選子字串
select regexp_extrct(
'trx_txt'
,'[0-9]',1
)
regexp_replace(string,pattern,replace string) --返回值 string
** 主要在select語句中作替換**
select regexp_replace(
'adci892'
,'[0-9]'
,'v'
)--adcivvv
order by
會對輸入做全域性排序,因此只有乙個reducer(多個reducer無法保證全域性有序),
只有乙個reducer,會導致當輸入規模較大時,需要較長的計算時間。
sort by
不是全域性排序,其在資料進入reducer前完成排序,
sort by 的資料只能保證在同一reduce中的資料可以按指定字段排序。
distribute by
按照指定的字段對資料進行劃分到不同的輸出reduce / 檔案中
cluster by
除了具有 distribute by 的功能外還兼具 sort by 的功能。
正規表示式函式
正規表示式函式 函 數 說 明 regexp like x,pattern match option 從x中搜尋pattern引數中定義的正規表示式。可以使用match option修改預設匹配選項,該引數可以被設定為 c 說明在匹配時區分大小寫 預設選項 i 說明在匹配時不區分大小寫 n 允許使用...
正規表示式 正規表示式函式 筆記
筆記直接使用pycharm製作,需要原始檔請私聊。正規表示式函式 1.match 2.search 3.全域性匹配函式 全域性匹配 re.compile 正規表示式 findall 資料 import re string poythonydasadcasa pat2 p.y 懶惰模式執行 較精準 r...
正規表示式 日期
1 日期範圍 datetime 值型別表示值範圍在公元 紀元 0001 年 1 月 1 日午夜 12 00 00 到公元 c.e.9999 年 12 月 31 日晚上 11 59 59 之間的日期和時間。2 閏年 關於公曆閏年是這樣規定的 地球繞太陽公轉一周叫做一回歸年,一回歸年長365日5時48分...