digraph G {
0 [labelType="html" label="<b>Exchange</b><br><br>shuffle records written: 1<br>local merged chunks fetched: 0<br>shuffle write time total (min, med, max (stageId: taskId))<br>1 ms (0 ms, 0 ms, 1 ms (stage 433.0: task 650))<br>remote merged bytes read total (min, med, max (stageId: taskId))<br>0.0 B (0.0 B, 0.0 B, 0.0 B (stage 479.0: task 713))<br>local merged blocks fetched: 0<br>corrupt merged block chunks: 0<br>remote merged reqs duration total (min, med, max (stageId: taskId))<br>0 ms (0 ms, 0 ms, 0 ms (stage 479.0: task 713))<br>remote merged blocks fetched: 0<br>records read: 1<br>local bytes read total (min, med, max (stageId: taskId))<br>118.0 B (0.0 B, 0.0 B, 118.0 B (stage 434.0: task 698))<br>fetch wait time total (min, med, max (stageId: taskId))<br>0 ms (0 ms, 0 ms, 0 ms (stage 479.0: task 713))<br>remote bytes read total (min, med, max (stageId: taskId))<br>0.0 B (0.0 B, 0.0 B, 0.0 B (stage 479.0: task 713))<br>merged fetch fallback count: 0<br>local blocks read: 1<br>remote merged chunks fetched: 0<br>remote blocks read: 0<br>data size total (min, med, max (stageId: taskId))<br>96.0 B (0.0 B, 0.0 B, 96.0 B (stage 433.0: task 650))<br>local merged bytes read total (min, med, max (stageId: taskId))<br>0.0 B (0.0 B, 0.0 B, 0.0 B (stage 479.0: task 713))<br>number of partitions: 16<br>remote reqs duration total (min, med, max (stageId: taskId))<br>0 ms (0 ms, 0 ms, 0 ms (stage 479.0: task 713))<br>remote bytes read to disk total (min, med, max (stageId: taskId))<br>0.0 B (0.0 B, 0.0 B, 0.0 B (stage 479.0: task 713))<br>shuffle bytes written total (min, med, max (stageId: taskId))<br>118.0 B (0.0 B, 0.0 B, 118.0 B (stage 433.0: task 650))"];
1 [labelType="html" label="<b>ObjectHashAggregate</b><br><br>number of output rows: 1<br>time in aggregation build total (min, med, max (stageId: taskId))<br>8.6 s (107 ms, 178 ms, 296 ms (stage 433.0: task 670))<br>spill size total (min, med, max (stageId: taskId))<br>0.0 B (0.0 B, 0.0 B, 0.0 B (stage 433.0: task 648))<br>number of sort fallback tasks: 0"];
2 [labelType="html" label="<b>StateStoreSave</b><br><br>number of shuffle partitions: 50<br>number of removed state rows: 0<br>data returned from Python workers total (min, med, max (stageId: taskId))<br>0.0 B (0.0 B, 0.0 B, 0.0 B (stage 433.0: task 648))<br>number of total state rows: 2<br>number of state store instances: 50<br>memory used by state total (min, med, max (stageId: taskId))<br>21.7 KiB (432.0 B, 432.0 B, 784.0 B (stage 433.0: task 676))<br>count of cache hit on states cache in provider: 300<br>number of output rows: 1<br>estimated size of state only on current version total (min, med, max (stageId: taskId))<br>5.7 KiB (104.0 B, 104.0 B, 424.0 B (stage 433.0: task 676))<br>number of rows which are dropped by watermark: 0<br>data sent to Python workers total (min, med, max (stageId: taskId))<br>0.0 B (0.0 B, 0.0 B, 0.0 B (stage 433.0: task 648))<br>count of cache miss on states cache in provider: 0<br>time to commit changes total (min, med, max (stageId: taskId))<br>8.4 s (107 ms, 177 ms, 295 ms (stage 433.0: task 670))<br>time to remove total (min, med, max (stageId: taskId))<br>0 ms (0 ms, 0 ms, 0 ms (stage 433.0: task 648))<br>number of updated state rows: 1<br>time to update total (min, med, max (stageId: taskId))<br>104 ms (0 ms, 0 ms, 104 ms (stage 433.0: task 650))<br>number of output rows: 0"];
3 [labelType="html" label="<b>ObjectHashAggregate</b><br><br>number of output rows: 1<br>time in aggregation build total (min, med, max (stageId: taskId))<br>102 ms (0 ms, 0 ms, 102 ms (stage 433.0: task 650))<br>spill size total (min, med, max (stageId: taskId))<br>0.0 B (0.0 B, 0.0 B, 0.0 B (stage 433.0: task 648))<br>number of sort fallback tasks: 0"];
4 [labelType="html" label="<b>StateStoreRestore</b><br><br>number of output rows: 1"];
5 [labelType="html" label="<b>ObjectHashAggregate</b><br><br>number of output rows: 1<br>time in aggregation build total (min, med, max (stageId: taskId))<br>102 ms (0 ms, 0 ms, 102 ms (stage 433.0: task 650))<br>spill size total (min, med, max (stageId: taskId))<br>0.0 B (0.0 B, 0.0 B, 0.0 B (stage 433.0: task 648))<br>number of sort fallback tasks: 0"];
6 [labelType="html" label="<b>Exchange</b><br><br>shuffle records written: 17<br>local merged chunks fetched: 0<br>shuffle write time total (min, med, max (stageId: taskId))<br>140 ms (0 ms, 0 ms, 83 ms (stage 432.0: task 647))<br>remote merged bytes read total (min, med, max (stageId: taskId))<br>0.0 B (0.0 B, 0.0 B, 0.0 B (stage 433.0: task 648))<br>local merged blocks fetched: 0<br>corrupt merged block chunks: 0<br>remote merged reqs duration total (min, med, max (stageId: taskId))<br>0 ms (0 ms, 0 ms, 0 ms (stage 433.0: task 648))<br>remote merged blocks fetched: 0<br>records read: 17<br>local bytes read total (min, med, max (stageId: taskId))<br>2.2 KiB (0.0 B, 0.0 B, 2.2 KiB (stage 433.0: task 650))<br>fetch wait time total (min, med, max (stageId: taskId))<br>0 ms (0 ms, 0 ms, 0 ms (stage 433.0: task 648))<br>remote bytes read total (min, med, max (stageId: taskId))<br>0.0 B (0.0 B, 0.0 B, 0.0 B (stage 433.0: task 648))<br>merged fetch fallback count: 0<br>local blocks read: 17<br>remote merged chunks fetched: 0<br>remote blocks read: 0<br>data size total (min, med, max (stageId: taskId))<br>2.3 KiB (0.0 B, 0.0 B, 136.0 B (stage 432.0: task 631))<br>local merged bytes read total (min, med, max (stageId: taskId))<br>0.0 B (0.0 B, 0.0 B, 0.0 B (stage 433.0: task 648))<br>number of partitions: 50<br>remote reqs duration total (min, med, max (stageId: taskId))<br>0 ms (0 ms, 0 ms, 0 ms (stage 433.0: task 648))<br>remote bytes read to disk total (min, med, max (stageId: taskId))<br>0.0 B (0.0 B, 0.0 B, 0.0 B (stage 433.0: task 648))<br>shuffle bytes written total (min, med, max (stageId: taskId))<br>2.2 KiB (0.0 B, 0.0 B, 136.0 B (stage 432.0: task 634))"];
7 [labelType="html" label="<b>ObjectHashAggregate</b><br><br>number of output rows: 17<br>time in aggregation build total (min, med, max (stageId: taskId))<br>2.8 s (0 ms, 0 ms, 729 ms (stage 432.0: task 631))<br>spill size total (min, med, max (stageId: taskId))<br>0.0 B (0.0 B, 0.0 B, 0.0 B (stage 433.0: task 648))<br>number of sort fallback tasks: 0"];
subgraph cluster8 {
isCluster="true";
label="WholeStageCodegen (2)\n \nduration: total (min, med, max (stageId: taskId))\n2.8 s (0 ms, 0 ms, 729 ms (stage 432.0: task 631))";
9 [labelType="html" label="<br><b>Project</b><br><br>"];
}
10 [labelType="html" label="<br><b>EventTimeWatermark</b><br><br>"];
subgraph cluster11 {
isCluster="true";
label="WholeStageCodegen (1)\n \nduration: total (min, med, max (stageId: taskId))\n2.9 s (0 ms, 0 ms, 730 ms (stage 432.0: task 631))";
12 [labelType="html" label="<br><b>Project</b><br><br>"];
}
13 [labelType="html" label="<br><b>Project</b><br><br>"];
14 [labelType="html" label="<b>Filter</b><br><br>number of output rows: 17"];
15 [labelType="html" label="<b>MicroBatchScan</b><br><br>number of output rows: 17<br>estimated number of fetched offsets out of range: 0<br>number of data loss error: 0"];
1->0;
2->1;
3->2;
4->3;
5->4;
6->5;
7->6;
9->7;
10->9;
12->10;
13->12;
14->13;
15->14;
}
16
Exchange RoundRobinPartitioning(16), REPARTITION_BY_NUM, [plan_id=2315]
ObjectHashAggregate(keys=[host#717, date#41], functions=[sum(CASE WHEN (ad_type#26 = request) THEN 1 ELSE 0 END), sum(CASE WHEN (ad_type#26 = impression) THEN 1 ELSE 0 END), sum(CASE WHEN NOT ad_type#26 IN (impression,request) THEN 1 ELSE 0 END), collect_set(domain#40, 0, 0)])
StateStoreSave [host#717, date#41], state info [ checkpoint = file:/app/checkpoint/2026_07_01/referrals_watermark3/state, runId = 906fc2c7-4e02-4dd8-b6bd-e1479cd0eeb1, opId = 0, ver = 3, numPartitions = 50], Update, 1783011783000, 1783011783000, 2
ObjectHashAggregate(keys=[host#717, date#41], functions=[merge_sum(CASE WHEN (ad_type#26 = request) THEN 1 ELSE 0 END), merge_sum(CASE WHEN (ad_type#26 = impression) THEN 1 ELSE 0 END), merge_sum(CASE WHEN NOT ad_type#26 IN (impression,request) THEN 1 ELSE 0 END), merge_collect_set(domain#40, 0, 0)])
StateStoreRestore [host#717, date#41], state info [ checkpoint = file:/app/checkpoint/2026_07_01/referrals_watermark3/state, runId = 906fc2c7-4e02-4dd8-b6bd-e1479cd0eeb1, opId = 0, ver = 3, numPartitions = 50], 2
ObjectHashAggregate(keys=[host#717, date#41], functions=[merge_sum(CASE WHEN (ad_type#26 = request) THEN 1 ELSE 0 END), merge_sum(CASE WHEN (ad_type#26 = impression) THEN 1 ELSE 0 END), merge_sum(CASE WHEN NOT ad_type#26 IN (impression,request) THEN 1 ELSE 0 END), merge_collect_set(domain#40, 0, 0)])
Exchange hashpartitioning(host#717, date#41, 50), ENSURE_REQUIREMENTS, [plan_id=2309]
ObjectHashAggregate(keys=[host#717, date#41], functions=[partial_sum(CASE WHEN (ad_type#26 = request) THEN 1 ELSE 0 END), partial_sum(CASE WHEN (ad_type#26 = impression) THEN 1 ELSE 0 END), partial_sum(CASE WHEN NOT ad_type#26 IN (impression,request) THEN 1 ELSE 0 END), partial_collect_set(domain#40, 0, 0)])
Project [ad_type#26, domain#40, date#41, regexp_extract(reference_link#34, ^(?:https?:\/\/)?(?:www\.)?([^\/:]+), 1) AS host#717]
WholeStageCodegen (2)
EventTimeWatermark created_at#33: timestamp, 15 minutes
Project [data#23.ad_type AS ad_type#26, data#23.created_at AS created_at#33, data#23.reference_link AS reference_link#34, data#23.domain AS domain#40, data#23.date AS date#41]
WholeStageCodegen (1)
Project [from_json(StructField(ip,StringType,true), StructField(ad_type,StringType,true), StructField(bot,IntegerType,true), StructField(title,StringType,true), StructField(url,StringType,true), StructField(uuid,StringType,true), StructField(keyword,StringType,true), StructField(inventory_code,IntegerType,true), StructField(created_at,TimestampType,true), StructField(reference_link,StringType,true), StructField(agent,StringType,true), StructField(referral_type,StringType,true), StructField(tracking_code,StringType,true), StructField(sub_id,StringType,true), StructField(click_type,StringType,true), StructField(domain,StringType,true), StructField(date,StringType,true), StructField(hour,IntegerType,true), StructField(inventory_ad_type,IntegerType,true), StructField(inventory_type_id,IntegerType,true), StructField(is_except_uuid,IntegerType,true), StructField(is_block_uuid,IntegerType,true), StructField(is_except_ip,IntegerType,true), StructField(is_block_ip,IntegerType,true), ... 8 more fields) AS data#23]
Filter ((((((isnotnull(value#8) AND NOT (RLIKE(from_json(StructField(agent,StringType,true), cast(value#8 as string), Some(Etc/UTC)).agent, Yeti|compatible|googlebot|google\.com\/bot\.html) <=> true)) AND (cast(from_json(StructField(date,StringType,true), cast(value#8 as string), Some(Etc/UTC)).date as date) = cast(from_utc_timestamp(2026-09-04 01:55:00.02, Asia/Seoul) as date))) AND isnotnull(regexp_extract(from_json(StructField(reference_link,StringType,true), cast(value#8 as string), Some(Etc/UTC)).reference_link, ^(?:https?:\/\/)?(?:www\.)?([^\/:]+), 1))) AND NOT RLIKE(regexp_extract(from_json(StructField(reference_link,StringType,true), cast(value#8 as string), Some(Etc/UTC)).reference_link, ^(?:https?:\/\/)?(?:www\.)?([^\/:]+), 1), .*\.googlesyndication\.com$)) AND isnotnull(from_json(StructField(domain,StringType,true), cast(value#8 as string), Some(Etc/UTC)).domain)) AND NOT RLIKE(from_json(StructField(domain,StringType,true), cast(value#8 as string), Some(Etc/UTC)).domain, .*\.googlesyndication\.com$))
MicroBatchScan[key#7, value#8, topic#9, partition#10, offset#11L, timestamp#12, timestampType#13] class org.apache.spark.sql.kafka010.KafkaSourceProvider$KafkaScan