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自动转换成空字符

问题三:业务逻辑不熟

你可能感兴趣的:(spark)