Ver Fonte

perf(manual/trd): 订单 ful seed 烤入资源调优,排序键改 GREATEST 统一活动日口径

一次性 seed 文件内嵌 30×4核/8g/shuffle1000(L2 覆盖默认 15×2核/6g/200);
ROW_NUMBER 排序键 COALESCE→GREATEST(create,update),与活动日口径一致
(本次一单一行为空操作;多版本重 seed 时取最后活动那版)。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
tianyu.chu há 1 semana atrás
pai
commit
cc71b723c5

+ 11 - 2
manual/backfill/20260717_ods_trd_card_group_order_info_ful_d_seed.sql

@@ -7,10 +7,19 @@
 --       不会把 D 之后的变更算进来;因此可 seed 到任意历史日。
 --       merge 模式需要一个起点,本脚本就是那个起点,只跑一次;之后由
 --       jobs/ods/trd/ods_trd_card_group_order_info_ful_d.sql 天天 merge 递推。
---       排序键 COALESCE(update_time, create_time) 与 ods 的 ods_dt 归位口径一致
+--       排序键 GREATEST(create_time, update_time) = 活动日口径,取最后活动那版为最新态
 --       静态分区写入(PARTITION(dt='${dt}')):源=inc、目标=full,不同表,无读写冲突。
 --       跑法:python3 bin/spark-sql-starter.py -f <本文件> -dt <seed日, 如 20260716>
 
+-- 资源放大(一次性 seed,扫全 ODS + 按 id shuffle;集群闲,L2 SET 覆盖默认 15×2核/6g/shuffle200)。
+SET spark.executor.instances=30;
+SET spark.executor.cores=4;
+SET spark.executor.memory=8g;
+SET spark.executor.memoryOverhead=2g;
+SET spark.driver.memory=8g;
+SET spark.sql.shuffle.partitions=1000;
+SET spark.default.parallelism=1000;
+
 INSERT OVERWRITE TABLE ods.ods_trd_card_group_order_info_ful_d PARTITION (dt='${dt}')
 SELECT
     id, group_info_id, merchant_id, user_id, shipping_address_id,
@@ -34,7 +43,7 @@ SELECT
     act_discount, is_deleted
 FROM (
     SELECT *,
-        ROW_NUMBER() OVER (PARTITION BY id ORDER BY COALESCE(update_time, create_time) DESC) AS rn
+        ROW_NUMBER() OVER (PARTITION BY id ORDER BY GREATEST(create_time, update_time) DESC) AS rn
     FROM ods.ods_trd_card_group_order_info_inc_d
     WHERE dt <= '${dt}'
 ) t