1. 程式人生 > >Spark SQL優化流程(解決叢集OOM問題)

Spark SQL優化流程(解決叢集OOM問題)

根據七張基礎業務表,生成大寬表

tt_sales_order		1826 7673  	大 ord
tt_deposit_order	56 0368  	小 dep
tt_vehicle_action	236 5624 	中 vac
tt_pipeline_pool	1000 0000  	大 pol
tt_vehicle_resource	53 9059  	小 vre
tt_dealer_resource	1000 0000  	大 dre
tt_dealer_retail_order	1602 3564  	大 ret

直接join報錯OOM
分步驟操作:

OrderSales_ordtwoyears
OrderSales_ord_dep_one
OrderSales_ord_dep_two
OrderSales_ord_vac_dep
OrderSales_pol_vre
OrderSales_dre_ret

第一步:where ord
篩選兩年內資料,並mark_for_delete = ‘0’
第二步:ord left outer join dep
經研究發生資料傾斜,主要原因是BRAND_ID欄位只有100和200兩個狀態
(先處理 BRAND_ID = 100)
第三步:ord left outer join dep
經研究發生資料傾斜,主要原因是BRAND_ID欄位只有100和200兩個狀態
(再處理 BRAND_ID = 200)
第四步:ord_dep left outer join vac
第五步:ord_dep_vac left outer join pol_vre
第六步:ord_dep_vac_pol_vre left outer join dre_ret


問題一:某個欄位有/n導致與hive換行符衝突

regexp_replace(dep.cust_name, '\n|\t|\r', '')  

問題二:join不上的資料顯示為NULL

採用parquet儲存格式,把NULL自動轉換成空字元

問題三:業務邏輯不熟