digraph G {
0 [id="node0" labelType="html" label="<br><b>AdaptiveSparkPlan</b><br><br>" tooltip="AdaptiveSparkPlan isFinalPlan=true"];
subgraph cluster1 {
isCluster="true";
id="cluster1";
label="WholeStageCodegen (6)\n \nduration: 0 ms";
tooltip="WholeStageCodegen (6)";
2 [id="node2" labelType="html" label="<b>HashAggregate</b><br><br>time in aggregation build: 0 ms<br>number of output rows: 1" tooltip="HashAggregate(keys=[], functions=[sum(length#1963L)])"];
}
3 [id="node3" labelType="html" label="<b>Exchange</b><br><br>shuffle records written: 0<br>remote merged reqs duration: 0 ms<br>remote merged blocks fetched: 0<br>records read: 0<br>local bytes read: 0.0 B<br>merged fetch fallback count: 0<br>local blocks read: 0<br>remote merged chunks fetched: 0<br>remote blocks read: 0<br>data size: 0.0 B<br>local merged bytes read: 0.0 B<br>local merged chunks fetched: 0<br>shuffle write time: 0 ms<br>remote merged bytes read: 0.0 B<br>local merged blocks fetched: 0<br>corrupt merged block chunks: 0<br>fetch wait time: 0 ms<br>remote bytes read: 0.0 B<br>remote reqs duration: 0 ms<br>remote bytes read to disk: 0.0 B<br>shuffle bytes written: 0.0 B" tooltip="Exchange SinglePartition, ENSURE_REQUIREMENTS, [plan_id=2489]"];
subgraph cluster4 {
isCluster="true";
id="cluster4";
label="WholeStageCodegen (5)";
tooltip="WholeStageCodegen (5)";
5 [id="node5" labelType="html" label="<br><b>HashAggregate</b><br><br>" tooltip="HashAggregate(keys=[], functions=[partial_sum(length#1963L)])"];
6 [id="node6" labelType="html" label="<br><b>EmptyRelation</b><br><br>" tooltip="EmptyRelation [plan_id=2479]"];
7 [id="node7" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [length#1963L]"];
8 [id="node8" labelType="html" label="<br><b>EmptyRelation</b><br><br>" tooltip="EmptyRelation Project [path#1960, length#1963L]"];
9 [id="node9" labelType="html" label="<br><b>Project</b><br><br>" tooltip="Project [path#1960, length#1963L]"];
10 [id="node10" labelType="html" label="<br><b>EmptyRelation</b><br><br>" tooltip="EmptyRelation Filter (count#1962L = 1)"];
11 [id="node11" labelType="html" label="<br><b>Filter</b><br><br>" tooltip="Filter (count#1962L = 1)"];
12 [id="node12" labelType="html" label="<br><b>EmptyRelation</b><br><br>" tooltip="EmptyRelation LogicalQueryStage Aggregate [path#1960], [path#1960, count(1) AS count#1962L, sum(length#1961L) AS length#1963L], HashAggregate(keys=[path#1960], functions=[count(1), sum(length#1961L)])"];
13 [id="node13" labelType="html" label="<br><b>LogicalQueryStage</b><br><br>" tooltip="LogicalQueryStage Aggregate [path#1960], [path#1960, count(1) AS count#1962L, sum(length#1961L) AS length#1963L], HashAggregate(keys=[path#1960], functions=[count(1), sum(length#1961L)])"];
14 [id="node14" labelType="html" label="<br><b>HashAggregate</b><br><br>" tooltip="HashAggregate(keys=[path#1960], functions=[count(1), sum(length#1961L)])"];
}
15 [id="node15" labelType="html" label="<b>Exchange</b><br><br>shuffle records written: 0<br>data size: 0.0 B<br>shuffle write time: 0 ms<br>number of partitions: 200<br>shuffle bytes written: 0.0 B" tooltip="Exchange hashpartitioning(path#1960, 200), ENSURE_REQUIREMENTS, [plan_id=2421]"];
subgraph cluster16 {
isCluster="true";
id="cluster16";
label="WholeStageCodegen (4)\n \nduration: total (min, med, max (stageId: taskId))\n188 ms (0 ms, 1 ms, 63 ms (stage 111.0: task 11268))";
tooltip="WholeStageCodegen (4)";
17 [id="node17" labelType="html" label="<b>HashAggregate</b><br><br>spill size: 0.0 B<br>time in aggregation build total (min, med, max (stageId: taskId))<br>1 ms (0 ms, 0 ms, 1 ms (stage 111.0: task 11268))<br>peak memory total (min, med, max (stageId: taskId))<br>50.0 MiB (256.0 KiB, 256.0 KiB, 256.0 KiB (stage 111.0: task 11268))<br>number of output rows: 0<br>number of sort fallback tasks: 0<br>avg hash probes per key: 0" tooltip="HashAggregate(keys=[path#1960], functions=[partial_count(1), partial_sum(length#1961L)])"];
18 [id="node18" labelType="html" label="<br><b>SerializeFromObject</b><br><br>" tooltip="SerializeFromObject [static_invoke(UTF8String.fromString(invoke(knownnotnull(assertnotnull(input[0, org.apache.spark.sql.delta.commands.VacuumCommand$FileNameAndSize, true])).path()))) AS path#1960, invoke(knownnotnull(assertnotnull(input[0, org.apache.spark.sql.delta.commands.VacuumCommand$FileNameAndSize, true])).length()) AS length#1961L]"];
}
19 [id="node19" labelType="html" label="<br><b>MapPartitions</b><br><br>" tooltip="MapPartitions org.apache.spark.sql.delta.commands.VacuumCommand$$$Lambda/0x00000008020dc000@322e395f, obj#1957: org.apache.spark.sql.delta.commands.VacuumCommand$FileNameAndSize"];
20 [id="node20" labelType="html" label="<br><b>DeserializeToObject</b><br><br>" tooltip="DeserializeToObject newInstance(class org.apache.spark.sql.delta.SerializableFileStatus), obj#1954: org.apache.spark.sql.delta.SerializableFileStatus"];
subgraph cluster21 {
isCluster="true";
id="cluster21";
label="WholeStageCodegen (3)\n \nduration: total (min, med, max (stageId: taskId))\n337 ms (1 ms, 1 ms, 124 ms (stage 111.0: task 11268))";
tooltip="WholeStageCodegen (3)";
22 [id="node22" labelType="html" label="<b>Filter</b><br><br>number of output rows: 0" tooltip="Filter ((modificationTime#1702L < 1787991979546) OR isDir#1701)"];
}
23 [id="node23" labelType="html" label="<b>InMemoryTableScan</b><br><br>number of output rows: 0" tooltip="InMemoryTableScan [path#1699, length#1700L, isDir#1701, modificationTime#1702L], [((modificationTime#1702L < 1787991979546) OR isDir#1701)]"];
24 [id="node24" labelType="html" label="<br><b>AdaptiveSparkPlan</b><br><br>" tooltip="AdaptiveSparkPlan isFinalPlan=true"];
subgraph cluster25 {
isCluster="true";
id="cluster25";
label="WholeStageCodegen (2)\n \nduration: 0 ms";
tooltip="WholeStageCodegen (2)";
26 [id="node26" labelType="html" label="<br><b>SerializeFromObject</b><br><br>" tooltip="SerializeFromObject [static_invoke(UTF8String.fromString(invoke(knownnotnull(assertnotnull(input[0, org.apache.spark.sql.delta.SerializableFileStatus, true])).path()))) AS path#1699, invoke(knownnotnull(assertnotnull(input[0, org.apache.spark.sql.delta.SerializableFileStatus, true])).length()) AS length#1700L, invoke(knownnotnull(assertnotnull(input[0, org.apache.spark.sql.delta.SerializableFileStatus, true])).isDir()) AS isDir#1701, invoke(knownnotnull(assertnotnull(input[0, org.apache.spark.sql.delta.SerializableFileStatus, true])).modificationTime()) AS modificationTime#1702L]"];
}
27 [id="node27" labelType="html" label="<br><b>MapGroups</b><br><br>" tooltip="MapGroups org.apache.spark.sql.internal.UDFAdaptors$$$Lambda/0x000000080209d5c0@563ebb8d, invoke(value#1693.toString()), newInstance(class org.apache.spark.sql.delta.SerializableFileStatus), [value#1693], [path#1683, length#1684L, isDir#1685, modificationTime#1686L], obj#1698: org.apache.spark.sql.delta.SerializableFileStatus"];
subgraph cluster28 {
isCluster="true";
id="cluster28";
label="WholeStageCodegen (1)\n \nduration: 0 ms";
tooltip="WholeStageCodegen (1)";
29 [id="node29" labelType="html" label="<b>Sort</b><br><br>sort time: 0 ms<br>peak memory: 0.0 B<br>spill size: 0.0 B" tooltip="Sort [value#1693 ASC NULLS FIRST], false, 0"];
}
30 [id="node30" labelType="html" label="<b>Exchange</b><br><br>shuffle records written: 0<br>remote merged reqs duration: 0 ms<br>remote merged blocks fetched: 0<br>records read: 0<br>local bytes read: 0.0 B<br>merged fetch fallback count: 0<br>local blocks read: 0<br>remote merged chunks fetched: 0<br>remote blocks read: 0<br>data size: 0.0 B<br>local merged bytes read: 0.0 B<br>local merged chunks fetched: 0<br>shuffle write time: 0 ms<br>remote merged bytes read: 0.0 B<br>local merged blocks fetched: 0<br>corrupt merged block chunks: 0<br>fetch wait time: 0 ms<br>remote bytes read: 0.0 B<br>number of partitions: 0<br>remote reqs duration: 0 ms<br>remote bytes read to disk: 0.0 B<br>shuffle bytes written: 0.0 B" tooltip="Exchange hashpartitioning(value#1693, 200), ENSURE_REQUIREMENTS, [plan_id=2018]"];
31 [id="node31" labelType="html" label="<br><b>AppendColumnsWithObject</b><br><br>" tooltip="AppendColumnsWithObject org.apache.spark.sql.delta.commands.VacuumCommand$$$Lambda/0x000000080209c000@3c79482b, [static_invoke(UTF8String.fromString(invoke(knownnotnull(assertnotnull(input[0, org.apache.spark.sql.delta.SerializableFileStatus, true])).path()))) AS path#1683, invoke(knownnotnull(assertnotnull(input[0, org.apache.spark.sql.delta.SerializableFileStatus, true])).length()) AS length#1684L, invoke(knownnotnull(assertnotnull(input[0, org.apache.spark.sql.delta.SerializableFileStatus, true])).isDir()) AS isDir#1685, invoke(knownnotnull(assertnotnull(input[0, org.apache.spark.sql.delta.SerializableFileStatus, true])).modificationTime()) AS modificationTime#1686L], [static_invoke(UTF8String.fromString(input[0, java.lang.String, true])) AS value#1693]"];
32 [id="node32" labelType="html" label="<br><b>MapElements</b><br><br>" tooltip="MapElements org.apache.spark.sql.delta.commands.VacuumCommand$$$Lambda/0x0000000802093950@5e5aa004, obj#1682: org.apache.spark.sql.delta.SerializableFileStatus"];
33 [id="node33" labelType="html" label="<b>Scan</b><br><br>number of output rows: 0" tooltip="Scan[obj#1667]"];
2->0;
3->2;
5->3;
6->5;
7->6;
8->7;
9->8;
10->9;
11->10;
12->11;
13->12;
14->13;
15->14;
17->15;
18->17;
19->18;
20->19;
22->20;
23->22;
24->23;
26->24;
27->26;
29->27;
30->29;
31->30;
32->31;
33->32;
}
== Physical Plan ==
AdaptiveSparkPlan (45)
+- == Final Plan ==
ResultQueryStage (6), Statistics(sizeInBytes=8.0 EiB)
+- * HashAggregate (5)
+- ShuffleQueryStage (4), Statistics(sizeInBytes=0.0 B, rowCount=0)
+- Exchange (3)
+- * HashAggregate (2)
+- * EmptyRelation (1)
+- Project (unknown)
+- EmptyRelation (unknown)
+- == Initial Plan ==
HashAggregate (44)
+- Exchange (43)
+- HashAggregate (42)
+- Project (41)
+- SortMergeJoin LeftAnti (40)
:- Sort (31)
: +- Project (30)
: +- Filter (29)
: +- HashAggregate (28)
: +- Exchange (27)
: +- HashAggregate (26)
: +- SerializeFromObject (25)
: +- MapPartitions (24)
: +- DeserializeToObject (23)
: +- Filter (22)
: +- InMemoryTableScan (7)
: +- InMemoryRelation (8)
: +- AdaptiveSparkPlan (21)
+- == Final Plan ==
ResultQueryStage (17)
+- * SerializeFromObject (16)
+- MapGroups (15)
+- * Sort (14)
+- ShuffleQueryStage (13), Statistics(sizeInBytes=0.0 B, rowCount=0)
+- Exchange (12)
+- AppendColumnsWithObject (11)
+- MapElements (10)
+- Scan (9)
+- == Initial Plan ==
SerializeFromObject (20)
+- MapGroups (19)
+- Sort (18)
+- Exchange (12)
+- AppendColumnsWithObject (11)
+- MapElements (10)
+- Scan (9)
+- Sort (39)
+- Exchange (38)
+- Project (37)
+- Filter (36)
+- SerializeFromObject (35)
+- MapPartitions (34)
+- DeserializeToObject (33)
+- Scan ExistingRDD Delta Table State #0 - hdlfs://065c2b6f-41bb-4a20-b7a2-eb965f9cb071.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-workload-determination-service/in/workload-dupl-lock-v3/_delta_log (32)
(1) EmptyRelation [codegen id : 5]
Output [1]: [length#1963L]
Arguments: [plan_id=2479]
(2) HashAggregate [codegen id : 5]
Input [1]: [length#1963L]
Keys: []
Functions [1]: [partial_sum(length#1963L)]
Aggregate Attributes [1]: [sum#2033L]
Results [1]: [sum#2034L]
(3) Exchange
Input [1]: [sum#2034L]
Arguments: SinglePartition, ENSURE_REQUIREMENTS, [plan_id=2489]
(4) ShuffleQueryStage
Output [1]: [sum#2034L]
Arguments: 3
(5) HashAggregate [codegen id : 6]
Input [1]: [sum#2034L]
Keys: []
Functions [1]: [sum(length#1963L)]
Aggregate Attributes [1]: [sum(length#1963L)#1971L]
Results [1]: [sum(length#1963L)#1971L AS CAST(sum(length) AS BIGINT)#1972L]
(6) ResultQueryStage
Output [1]: [CAST(sum(length) AS BIGINT)#1972L]
Arguments: 4
(7) InMemoryTableScan
Output [4]: [path#1699, length#1700L, isDir#1701, modificationTime#1702L]
Arguments: [path#1699, length#1700L, isDir#1701, modificationTime#1702L], [((modificationTime#1702L < 1787991979546) OR isDir#1701)]
(8) InMemoryRelation
Arguments: [path#1699, length#1700L, isDir#1701, modificationTime#1702L], StorageLevel(disk, memory, deserialized, 1 replicas)
(9) Scan
Output [1]: [obj#1667]
Arguments: obj#1667: org.apache.spark.sql.delta.SerializableFileStatus, MapPartitionsRDD[189] at $anonfun$recordDeltaOperationInternal$1 at DatabricksLogging.scala:128
(10) MapElements
Input [1]: [obj#1667]
Arguments: org.apache.spark.sql.delta.commands.VacuumCommand$$$Lambda/0x0000000802093950@5e5aa004, obj#1682: org.apache.spark.sql.delta.SerializableFileStatus
(11) AppendColumnsWithObject
Input [1]: [obj#1682]
Arguments: org.apache.spark.sql.delta.commands.VacuumCommand$$$Lambda/0x000000080209c000@3c79482b, [static_invoke(UTF8String.fromString(invoke(knownnotnull(assertnotnull(input[0, org.apache.spark.sql.delta.SerializableFileStatus, true])).path()))) AS path#1683, invoke(knownnotnull(assertnotnull(input[0, org.apache.spark.sql.delta.SerializableFileStatus, true])).length()) AS length#1684L, invoke(knownnotnull(assertnotnull(input[0, org.apache.spark.sql.delta.SerializableFileStatus, true])).isDir()) AS isDir#1685, invoke(knownnotnull(assertnotnull(input[0, org.apache.spark.sql.delta.SerializableFileStatus, true])).modificationTime()) AS modificationTime#1686L], [static_invoke(UTF8String.fromString(input[0, java.lang.String, true])) AS value#1693]
(12) Exchange
Input [5]: [path#1683, length#1684L, isDir#1685, modificationTime#1686L, value#1693]
Arguments: hashpartitioning(value#1693, 200), ENSURE_REQUIREMENTS, [plan_id=2018]
(13) ShuffleQueryStage
Output [5]: [path#1683, length#1684L, isDir#1685, modificationTime#1686L, value#1693]
Arguments: 0
(14) Sort [codegen id : 1]
Input [5]: [path#1683, length#1684L, isDir#1685, modificationTime#1686L, value#1693]
Arguments: [value#1693 ASC NULLS FIRST], false, 0
(15) MapGroups
Input [5]: [path#1683, length#1684L, isDir#1685, modificationTime#1686L, value#1693]
Arguments: org.apache.spark.sql.internal.UDFAdaptors$$$Lambda/0x000000080209d5c0@563ebb8d, invoke(value#1693.toString()), newInstance(class org.apache.spark.sql.delta.SerializableFileStatus), [value#1693], [path#1683, length#1684L, isDir#1685, modificationTime#1686L], obj#1698: org.apache.spark.sql.delta.SerializableFileStatus
(16) SerializeFromObject [codegen id : 2]
Input [1]: [obj#1698]
Arguments: [static_invoke(UTF8String.fromString(invoke(knownnotnull(assertnotnull(input[0, org.apache.spark.sql.delta.SerializableFileStatus, true])).path()))) AS path#1699, invoke(knownnotnull(assertnotnull(input[0, org.apache.spark.sql.delta.SerializableFileStatus, true])).length()) AS length#1700L, invoke(knownnotnull(assertnotnull(input[0, org.apache.spark.sql.delta.SerializableFileStatus, true])).isDir()) AS isDir#1701, invoke(knownnotnull(assertnotnull(input[0, org.apache.spark.sql.delta.SerializableFileStatus, true])).modificationTime()) AS modificationTime#1702L]
(17) ResultQueryStage
Output [4]: [path#1699, length#1700L, isDir#1701, modificationTime#1702L]
Arguments: 1
(18) Sort
Input [5]: [path#1683, length#1684L, isDir#1685, modificationTime#1686L, value#1693]
Arguments: [value#1693 ASC NULLS FIRST], false, 0
(19) MapGroups
Input [5]: [path#1683, length#1684L, isDir#1685, modificationTime#1686L, value#1693]
Arguments: org.apache.spark.sql.internal.UDFAdaptors$$$Lambda/0x000000080209d5c0@563ebb8d, invoke(value#1693.toString()), newInstance(class org.apache.spark.sql.delta.SerializableFileStatus), [value#1693], [path#1683, length#1684L, isDir#1685, modificationTime#1686L], obj#1698: org.apache.spark.sql.delta.SerializableFileStatus
(20) SerializeFromObject
Input [1]: [obj#1698]
Arguments: [static_invoke(UTF8String.fromString(invoke(knownnotnull(assertnotnull(input[0, org.apache.spark.sql.delta.SerializableFileStatus, true])).path()))) AS path#1699, invoke(knownnotnull(assertnotnull(input[0, org.apache.spark.sql.delta.SerializableFileStatus, true])).length()) AS length#1700L, invoke(knownnotnull(assertnotnull(input[0, org.apache.spark.sql.delta.SerializableFileStatus, true])).isDir()) AS isDir#1701, invoke(knownnotnull(assertnotnull(input[0, org.apache.spark.sql.delta.SerializableFileStatus, true])).modificationTime()) AS modificationTime#1702L]
(21) AdaptiveSparkPlan
Output [4]: [path#1699, length#1700L, isDir#1701, modificationTime#1702L]
Arguments: isFinalPlan=true
(22) Filter
Input [4]: [path#1699, length#1700L, isDir#1701, modificationTime#1702L]
Condition : ((modificationTime#1702L < 1787991979546) OR isDir#1701)
(23) DeserializeToObject
Input [4]: [path#1699, length#1700L, isDir#1701, modificationTime#1702L]
Arguments: newInstance(class org.apache.spark.sql.delta.SerializableFileStatus), obj#1954: org.apache.spark.sql.delta.SerializableFileStatus
(24) MapPartitions
Input [1]: [obj#1954]
Arguments: org.apache.spark.sql.delta.commands.VacuumCommand$$$Lambda/0x00000008020dc000@322e395f, obj#1957: org.apache.spark.sql.delta.commands.VacuumCommand$FileNameAndSize
(25) SerializeFromObject
Input [1]: [obj#1957]
Arguments: [static_invoke(UTF8String.fromString(invoke(knownnotnull(assertnotnull(input[0, org.apache.spark.sql.delta.commands.VacuumCommand$FileNameAndSize, true])).path()))) AS path#1960, invoke(knownnotnull(assertnotnull(input[0, org.apache.spark.sql.delta.commands.VacuumCommand$FileNameAndSize, true])).length()) AS length#1961L]
(26) HashAggregate
Input [2]: [path#1960, length#1961L]
Keys [1]: [path#1960]
Functions [2]: [partial_count(1), partial_sum(length#1961L)]
Aggregate Attributes [2]: [count#2035L, sum#2036L]
Results [3]: [path#1960, count#2037L, sum#2038L]
(27) Exchange
Input [3]: [path#1960, count#2037L, sum#2038L]
Arguments: hashpartitioning(path#1960, 200), ENSURE_REQUIREMENTS, [plan_id=2234]
(28) HashAggregate
Input [3]: [path#1960, count#2037L, sum#2038L]
Keys [1]: [path#1960]
Functions [2]: [count(1), sum(length#1961L)]
Aggregate Attributes [2]: [count(1)#1966L, sum(length#1961L)#1967L]
Results [3]: [path#1960, count(1)#1966L AS count#1962L, sum(length#1961L)#1967L AS length#1963L]
(29) Filter
Input [3]: [path#1960, count#1962L, length#1963L]
Condition : (count#1962L = 1)
(30) Project
Output [2]: [path#1960, length#1963L]
Input [3]: [path#1960, count#1962L, length#1963L]
(31) Sort
Input [2]: [path#1960, length#1963L]
Arguments: [path#1960 ASC NULLS FIRST], false, 0
(32) Scan ExistingRDD Delta Table State #0 - hdlfs://065c2b6f-41bb-4a20-b7a2-eb965f9cb071.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-workload-determination-service/in/workload-dupl-lock-v3/_delta_log [codegen id : 1]
Output [10]: [txn#113, add#114, remove#115, metaData#116, protocol#117, cdc#118, checkpointMetadata#119, sidecar#120, domainMetadata#121, commitInfo#122]
Arguments: [txn#113, add#114, remove#115, metaData#116, protocol#117, cdc#118, checkpointMetadata#119, sidecar#120, domainMetadata#121, commitInfo#122], Delta Table State #0 - hdlfs://065c2b6f-41bb-4a20-b7a2-eb965f9cb071.files.hdl.prod-eu20.hanacloud.ondemand.com:443/crp-workload-determination-service/in/workload-dupl-lock-v3/_delta_log MapPartitionsRDD[10] at $anonfun$recordDeltaOperationInternal$1 at DatabricksLogging.scala:128, ExistingRDD, UnknownPartitioning(0)
(33) DeserializeToObject
Input [10]: [txn#113, add#114, remove#115, metaData#116, protocol#117, cdc#118, checkpointMetadata#119, sidecar#120, domainMetadata#121, commitInfo#122]
Arguments: newInstance(class org.apache.spark.sql.delta.actions.SingleAction), obj#1655: org.apache.spark.sql.delta.actions.SingleAction
(34) MapPartitions
Input [1]: [obj#1655]
Arguments: org.apache.spark.sql.delta.commands.VacuumCommand$$$Lambda/0x000000080208f3e8@6d88f017, obj#1656: java.lang.String
(35) SerializeFromObject
Input [1]: [obj#1656]
Arguments: [static_invoke(UTF8String.fromString(input[0, java.lang.String, true])) AS value#1657]
(36) Filter
Input [1]: [value#1657]
Condition : isnotnull(value#1657)
(37) Project
Output [1]: [value#1657 AS path#1658]
Input [1]: [value#1657]
(38) Exchange
Input [1]: [path#1658]
Arguments: hashpartitioning(path#1658, 200), ENSURE_REQUIREMENTS, [plan_id=2240]
(39) Sort
Input [1]: [path#1658]
Arguments: [path#1658 ASC NULLS FIRST], false, 0
(40) SortMergeJoin
Left keys [1]: [path#1960]
Right keys [1]: [path#1658]
Join type: LeftAnti
Join condition: None
(41) Project
Output [1]: [length#1963L]
Input [2]: [path#1960, length#1963L]
(42) HashAggregate
Input [1]: [length#1963L]
Keys: []
Functions [1]: [partial_sum(length#1963L)]
Aggregate Attributes [1]: [sum#2033L]
Results [1]: [sum#2034L]
(43) Exchange
Input [1]: [sum#2034L]
Arguments: SinglePartition, ENSURE_REQUIREMENTS, [plan_id=2247]
(44) HashAggregate
Input [1]: [sum#2034L]
Keys: []
Functions [1]: [sum(length#1963L)]
Aggregate Attributes [1]: [sum(length#1963L)#1971L]
Results [1]: [sum(length#1963L)#1971L AS CAST(sum(length) AS BIGINT)#1972L]
(45) AdaptiveSparkPlan
Output [1]: [CAST(sum(length) AS BIGINT)#1972L]
Arguments: isFinalPlan=true