hive合併陣列

2021-10-23 10:31:19 字數 1417 閱讀 2472

將上圖中紅框的兩個陣列合併為乙個陣列並去重,也就是同乙個productid對應的city_tags和hotel_tags取並集

第一步,先將陣列中的資料全部取出來 使用lateral view、explode 2個函式,可以實現把乙個array型別的值分開

第二步:使用collect_set函式配合group by將同乙個productid對應的ta**進行合併為同乙個陣列

select h.productid,h.cityid,h.airlinecode,h.hotelid,collect_set(h.ta**) as tags 

from

(select t.productid, t.cityid,t.airlinecode,t.hotelid,ta** from (select productid, cityid,airlinecode,hotelid, tagids from product_pbs.origin_pbs_product ) t lateral view explode(t.tags) v as ta**

union all select t.productid,t.cityid,t.airlinecode,t.hotelid, ta** from (select productid,cityid,airlinecode,hotelid, hoteltags from product_pbs.origin_pbs_product ) t lateral view explode(t.tagids) v as ta**) h

group by h.productid,h.cityid,h.airlinecode,h.hotelid;

hive小檔案合併機制 Hive小檔案合併遷移

1 需求 2 小檔案合併 我們通過sparksql進行小檔案合併,首先開啟spark shell申請足夠多的資源 spark shell master yarn driver memory 20g driver cores 4 executor cores 6 num executors 18 ex...

陣列演練 合併陣列

public class onearray 09 int b int c combinearray a,b system.out.println 合併之後的新陣列c的元素如下 for int k 0 k a.length b.length k 迴圈輸出合併後的陣列的元素 system.out.pri...

hive優化之小檔案合併

檔案數目過多,會給hdfs帶來壓力,並且會影響處理效率,可以通過合併map和reduce的結果檔案來消除這樣的影響 set hive.merge.mapfiles true 在 map only 的任務結束時合併小檔案 set hive.merge.mapredfiles false true 時在...