HiveSQL中row number使用介紹

2021-08-22 19:44:34 字數 1480 閱讀 6172

方式一:

select 

t2.user_log_acct

,t2.item_sku_id

,t2.time

from

(select *

from

distribute by item_sku_id

sort by user_log_acct,item_sku_id,time desc

) t2

where row_number(t2.user_log_acct, t2.item_sku_id) = 1

;

方式二:

--由於item_sku_id資料量比較大,distribute by item_sku_id 生成的reduce數量比較多,效能比較低;可以修改如下,100可以根據不同情況來調:

select

t2.user_log_acct

,t2.item_sku_id

,t2.time

from

(select *

from

distribute by pmod(item_sku_id, 100)

sort by user_log_acct,item_sku_id,time desc

) t2

where row_number(t2.user_log_acct, t2.item_sku_id) = 1

;

方式三:

--由於有可能有些hive版本不知道上面兩種直接where後面row_number(t2.user_log_acct, t2.item_sku_id) = 1

select

t3.user_log_acct

,t3.item_sku_id

,t3.time

from

(select

t2.user_log_acct

,t2.item_sku_id

,t2.time

,row_number(t2.user_log_acct, t2.item_sku_id) r_num

from

(select *

from

distribute by pmod(item_sku_id, 100)

sort by user_log_acct,item_sku_id,time desc

) t2

) t3

where t3.r_num = 1

;

注意點:

1.使用子查詢保證row_number在reduce端執行。

2.使用distribute by item_sku_id sort by user_log_acct,item_sku_id,time desc來保證item_sku_id相同的記錄被分配到相同的reduce中。

hive sql中的json解析函式

函式語法 get json object json物件變數,json變數標識 第乙個引數為json物件變數,第二個引數使用 表示json變數標識,然後用 或讀取物件或陣列。eg 定義乙個資料字典 dataframe,dataframe bike 解析字典中的元素資訊 select get json ...

Hive SQL獲取表中複雜結構資料

資料格式基本如下 col1 totalcount 6,couponexplain 優惠 x選 u 服 xx月 每 x次。方法一 當欄位col1是string型別時,我們可以直接使用中括號來獲取,select col1 key的名字 from ods.ods x limit 1000方法二 當欄位co...

hive sql優化整理

hive sql優化方法引數一些整理,方便快速查詢使用 1.map數量與reduce數量的控制 輸入檔案大小指實際檔案大小,與檔案格式textfile,orc等無關,壓縮的檔案格式會小很多設定引數要適當調整 map數量控制 set hive.input.format org.apache.hadoo...