== Physical Plan ==
AdaptiveSparkPlan (32)
+- == Final Plan ==
Execute InsertIntoHadoopFsRelationCommand (26)
+- WriteFiles (25)
+- * Sort (24)
+- * Project (23)
+- AQEShuffleRead (22)
+- ShuffleQueryStage (21), Statistics(sizeInBytes=350.7 MiB, rowCount=1.19E+6)
+- Exchange (20)
+- TableCacheQueryStage (19), Statistics(sizeInBytes=260.4 MiB, rowCount=1.19E+6)
+- InMemoryTableScan (1)
+- InMemoryRelation (2)
+- AdaptiveSparkPlan (18)
+- Project (17)
+- Window (16)
+- Sort (15)
+- Exchange (14)
+- Project (13)
+- Filter (12)
+- InMemoryTableScan (3)
+- InMemoryRelation (4)
+- AdaptiveSparkPlan (11)
+- Project (10)
+- Project (9)
+- InMemoryTableScan (5)
+- InMemoryRelation (6)
+- * Project (8)
+- Scan csv (7)
+- == Initial Plan ==
Execute InsertIntoHadoopFsRelationCommand (31)
+- WriteFiles (30)
+- Sort (29)
+- Project (28)
+- Exchange (27)
+- InMemoryTableScan (1)
+- InMemoryRelation (2)
+- AdaptiveSparkPlan (18)
+- Project (17)
+- Window (16)
+- Sort (15)
+- Exchange (14)
+- Project (13)
+- Filter (12)
+- InMemoryTableScan (3)
+- InMemoryRelation (4)
+- AdaptiveSparkPlan (11)
+- Project (10)
+- Project (9)
+- InMemoryTableScan (5)
+- InMemoryRelation (6)
+- * Project (8)
+- Scan csv (7)
(1) InMemoryTableScan
Output [18]: [ride_id#3716, rideable_type#3717, started_at#3718, ended_at#3719, start_station_name#3720, start_station_id#3721, end_station_name#3722, end_station_id#3723, start_lat#3724, start_lng#3725, end_lat#3726, end_lng#3727, member_casual#3728, _source_file#3294, _processed_dttm#13637, _start_station_ride_num#13639, year#13640, month#13641]
Arguments: [ride_id#3716, rideable_type#3717, started_at#3718, ended_at#3719, start_station_name#3720, start_station_id#3721, end_station_name#3722, end_station_id#3723, start_lat#3724, start_lng#3725, end_lat#3726, end_lng#3727, member_casual#3728, _source_file#3294, _processed_dttm#13637, _start_station_ride_num#13639, year#13640, month#13641]
(2) InMemoryRelation
Arguments: [ride_id#3716, rideable_type#3717, started_at#3718, ended_at#3719, start_station_name#3720, start_station_id#3721, end_station_name#3722, end_station_id#3723, start_lat#3724, start_lng#3725, end_lat#3726, end_lng#3727, member_casual#3728, _source_file#3294, _processed_dttm#13637, _start_station_ride_num#13639, year#13640, month#13641], CachedRDDBuilder(org.apache.spark.sql.execution.columnar.DefaultCachedBatchSerializer@28f1e8bc,StorageLevel(disk, memory, deserialized, 1 replicas),AdaptiveSparkPlan isFinalPlan=true
+- == Final Plan ==
*(3) Project [ride_id#3716, rideable_type#3717, started_at#3718, ended_at#3719, start_station_name#3720, start_station_id#3721, end_station_name#3722, end_station_id#3723, start_lat#3724, start_lng#3725, end_lat#3726, end_lng#3727, member_casual#3728, _source_file#3294, 2026-11-01 20:50:07.599499 AS _processed_dttm#13637, _start_station_ride_num#13639, year#13640, month#13641]
+- Window [row_number() windowspecdefinition(start_station_id#3721, _w0#13642, _w1#13643, started_at#3718 ASC NULLS FIRST, ride_id#3716 ASC NULLS FIRST, specifiedwindowframe(RowFrame, unboundedpreceding$(), currentrow$())) AS _start_station_ride_num#13639], [start_station_id#3721, _w0#13642, _w1#13643], [started_at#3718 ASC NULLS FIRST, ride_id#3716 ASC NULLS FIRST]
+- *(2) Sort [start_station_id#3721 ASC NULLS FIRST, _w0#13642 ASC NULLS FIRST, _w1#13643 ASC NULLS FIRST, started_at#3718 ASC NULLS FIRST, ride_id#3716 ASC NULLS FIRST], false, 0
+- AQEShuffleRead coalesced
+- ShuffleQueryStage 1
+- Exchange hashpartitioning(start_station_id#3721, _w0#13642, _w1#13643, 200), ENSURE_REQUIREMENTS, [plan_id=2956]
+- *(1) Project [ride_id#3716, rideable_type#3717, started_at#3718, ended_at#3719, start_station_name#3720, start_station_id#3721, end_station_name#3722, end_station_id#3723, start_lat#3724, start_lng#3725, end_lat#3726, end_lng#3727, member_casual#3728, _source_file#3294, date_format(started_at#3718, yyyy, Some(UTC)) AS year#13640, date_format(started_at#3718, MM, Some(UTC)) AS month#13641, date_format(started_at#3718, yyyy, Some(UTC)) AS _w0#13642, date_format(started_at#3718, MM, Some(UTC)) AS _w1#13643]
+- *(1) Filter (isnotnull(_is_valid#12611) AND _is_valid#12611)
+- TableCacheQueryStage 0
+- InMemoryTableScan [_is_valid#12611, _source_file#3294, end_lat#3726, end_lng#3727, end_station_id#3723, end_station_name#3722, ended_at#3719, member_casual#3728, ride_id#3716, rideable_type#3717, start_lat#3724, start_lng#3725, start_station_id#3721, start_station_name#3720, started_at#3718], [isnotnull(_is_valid#12611), _is_valid#12611]
+- InMemoryRelation [ride_id#3716, rideable_type#3717, started_at#3718, ended_at#3719, start_station_name#3720, start_station_id#3721, end_station_name#3722, end_station_id#3723, start_lat#3724, start_lng#3725, end_lat#3726, end_lng#3727, member_casual#3728, _corrupt_record#3279, _source_file#3294, _is_ride_id_not_empty#12608, _is_ended_after_started#12609, _is_different_stations#12610, _is_valid#12611], StorageLevel(disk, memory, deserialized, 1 replicas)
+- AdaptiveSparkPlan isFinalPlan=false
+- Project [ride_id#128, rideable_type#129, started_at#669, ended_at#670, start_station_name#132, start_station_id#133, end_station_name#134, end_station_id#135, start_lat#675, start_lng#676, end_lat#677, end_lng#678, member_casual#140, _corrupt_record#141, _source_file#156, (isnotnull(ride_id#128) AND NOT (trim(ride_id#128, None) = )) AS _is_ride_id_not_empty#695, coalesce((ended_at#670 > started_at#669), false) AS _is_ended_after_started#696, coalesce(NOT (end_station_id#135 = start_station_id#133), false) AS _is_different_stations#697, ((((isnotnull(ride_id#128) AND NOT (trim(ride_id#128, None) = )) AND coalesce((ended_at#670 > started_at#669), false)) AND coalesce(NOT (end_station_id#135 = start_station_id#133), false)) AND isnull(_corrupt_record#141)) AS _is_valid#698]
+- Project [ride_id#128, rideable_type#129, cast(started_at#130 as timestamp) AS started_at#669, cast(ended_at#131 as timestamp) AS ended_at#670, start_station_name#132, start_station_id#133, end_station_name#134, end_station_id#135, cast(start_lat#136 as double) AS start_lat#675, cast(start_lng#137 as double) AS start_lng#676, cast(end_lat#138 as double) AS end_lat#677, cast(end_lng#139 as double) AS end_lng#678, member_casual#140, _corrupt_record#141, _source_file#156]
+- InMemoryTableScan [_corrupt_record#141, _source_file#156, end_lat#138, end_lng#139, end_station_id#135, end_station_name#134, ended_at#131, member_casual#140, ride_id#128, rideable_type#129, start_lat#136, start_lng#137, start_station_id#133, start_station_name#132, started_at#130]
+- InMemoryRelation [ride_id#128, rideable_type#129, started_at#130, ended_at#131, start_station_name#132, start_station_id#133, end_station_name#134, end_station_id#135, start_lat#136, start_lng#137, end_lat#138, end_lng#139, member_casual#140, _corrupt_record#141, _source_file#156], StorageLevel(disk, memory, deserialized, 1 replicas)
+- *(1) Project [ride_id#128, rideable_type#129, started_at#130, ended_at#131, start_station_name#132, start_station_id#133, end_station_name#134, end_station_id#135, start_lat#136, start_lng#137, end_lat#138, end_lng#139, member_casual#140, _corrupt_record#141, regexp_extract(input_file_name(), [^/]+$, 0) AS _source_file#156]
+- FileScan csv [ride_id#128,rideable_type#129,started_at#130,ended_at#131,start_station_name#132,start_station_id#133,end_station_name#134,end_station_id#135,start_lat#136,start_lng#137,end_lat#138,end_lng#139,member_casual#140,_corrupt_record#141] Batched: false, DataFilters: [], Format: CSV, Location: InMemoryFileIndex(2 paths)[s3a://rzvde-g11-durnev-pavel/raw/citibike_data/202602/202602-citibike-..., PartitionFilters: [], PushedFilters: [], ReadSchema: struct<ride_id:string,rideable_type:string,started_at:string,ended_at:string,start_station_name:s...
+- == Initial Plan ==
Project [ride_id#3716, rideable_type#3717, started_at#3718, ended_at#3719, start_station_name#3720, start_station_id#3721, end_station_name#3722, end_station_id#3723, start_lat#3724, start_lng#3725, end_lat#3726, end_lng#3727, member_casual#3728, _source_file#3294, 2026-11-01 20:50:07.599499 AS _processed_dttm#13637, _start_station_ride_num#13639, year#13640, month#13641]
+- Window [row_number() windowspecdefinition(start_station_id#3721, _w0#13642, _w1#13643, started_at#3718 ASC NULLS FIRST, ride_id#3716 ASC NULLS FIRST, specifiedwindowframe(RowFrame, unboundedpreceding$(), currentrow$())) AS _start_station_ride_num#13639], [start_station_id#3721, _w0#13642, _w1#13643], [started_at#3718 ASC NULLS FIRST, ride_id#3716 ASC NULLS FIRST]
+- Sort [start_station_id#3721 ASC NULLS FIRST, _w0#13642 ASC NULLS FIRST, _w1#13643 ASC NULLS FIRST, started_at#3718 ASC NULLS FIRST, ride_id#3716 ASC NULLS FIRST], false, 0
+- Exchange hashpartitioning(start_station_id#3721, _w0#13642, _w1#13643, 200), ENSURE_REQUIREMENTS, [plan_id=2881]
+- Project [ride_id#3716, rideable_type#3717, started_at#3718, ended_at#3719, start_station_name#3720, start_station_id#3721, end_station_name#3722, end_station_id#3723, start_lat#3724, start_lng#3725, end_lat#3726, end_lng#3727, member_casual#3728, _source_file#3294, date_format(started_at#3718, yyyy, Some(UTC)) AS year#13640, date_format(started_at#3718, MM, Some(UTC)) AS month#13641, date_format(started_at#3718, yyyy, Some(UTC)) AS _w0#13642, date_format(started_at#3718, MM, Some(UTC)) AS _w1#13643]
+- Filter (isnotnull(_is_valid#12611) AND _is_valid#12611)
+- InMemoryTableScan [_is_valid#12611, _source_file#3294, end_lat#3726, end_lng#3727, end_station_id#3723, end_station_name#3722, ended_at#3719, member_casual#3728, ride_id#3716, rideable_type#3717, start_lat#3724, start_lng#3725, start_station_id#3721, start_station_name#3720, started_at#3718], [isnotnull(_is_valid#12611), _is_valid#12611]
+- InMemoryRelation [ride_id#3716, rideable_type#3717, started_at#3718, ended_at#3719, start_station_name#3720, start_station_id#3721, end_station_name#3722, end_station_id#3723, start_lat#3724, start_lng#3725, end_lat#3726, end_lng#3727, member_casual#3728, _corrupt_record#3279, _source_file#3294, _is_ride_id_not_empty#12608, _is_ended_after_started#12609, _is_different_stations#12610, _is_valid#12611], StorageLevel(disk, memory, deserialized, 1 replicas)
+- AdaptiveSparkPlan isFinalPlan=false
+- Project [ride_id#128, rideable_type#129, started_at#669, ended_at#670, start_station_name#132, start_station_id#133, end_station_name#134, end_station_id#135, start_lat#675, start_lng#676, end_lat#677, end_lng#678, member_casual#140, _corrupt_record#141, _source_file#156, (isnotnull(ride_id#128) AND NOT (trim(ride_id#128, None) = )) AS _is_ride_id_not_empty#695, coalesce((ended_at#670 > started_at#669), false) AS _is_ended_after_started#696, coalesce(NOT (end_station_id#135 = start_station_id#133), false) AS _is_different_stations#697, ((((isnotnull(ride_id#128) AND NOT (trim(ride_id#128, None) = )) AND coalesce((ended_at#670 > started_at#669), false)) AND coalesce(NOT (end_station_id#135 = start_station_id#133), false)) AND isnull(_corrupt_record#141)) AS _is_valid#698]
+- Project [ride_id#128, rideable_type#129, cast(started_at#130 as timestamp) AS started_at#669, cast(ended_at#131 as timestamp) AS ended_at#670, start_station_name#132, start_station_id#133, end_station_name#134, end_station_id#135, cast(start_lat#136 as double) AS start_lat#675, cast(start_lng#137 as double) AS start_lng#676, cast(end_lat#138 as double) AS end_lat#677, cast(end_lng#139 as double) AS end_lng#678, member_casual#140, _corrupt_record#141, _source_file#156]
+- InMemoryTableScan [_corrupt_record#141, _source_file#156, end_lat#138, end_lng#139, end_station_id#135, end_station_name#134, ended_at#131, member_casual#140, ride_id#128, rideable_type#129, start_lat#136, start_lng#137, start_station_id#133, start_station_name#132, started_at#130]
+- InMemoryRelation [ride_id#128, rideable_type#129, started_at#130, ended_at#131, start_station_name#132, start_station_id#133, end_station_name#134, end_station_id#135, start_lat#136, start_lng#137, end_lat#138, end_lng#139, member_casual#140, _corrupt_record#141, _source_file#156], StorageLevel(disk, memory, deserialized, 1 replicas)
+- *(1) Project [ride_id#128, rideable_type#129, started_at#130, ended_at#131, start_station_name#132, start_station_id#133, end_station_name#134, end_station_id#135, start_lat#136, start_lng#137, end_lat#138, end_lng#139, member_casual#140, _corrupt_record#141, regexp_extract(input_file_name(), [^/]+$, 0) AS _source_file#156]
+- FileScan csv [ride_id#128,rideable_type#129,started_at#130,ended_at#131,start_station_name#132,start_station_id#133,end_station_name#134,end_station_id#135,start_lat#136,start_lng#137,end_lat#138,end_lng#139,member_casual#140,_corrupt_record#141] Batched: false, DataFilters: [], Format: CSV, Location: InMemoryFileIndex(2 paths)[s3a://rzvde-g11-durnev-pavel/raw/citibike_data/202602/202602-citibike-..., PartitionFilters: [], PushedFilters: [], ReadSchema: struct<ride_id:string,rideable_type:string,started_at:string,ended_at:string,start_station_name:s...
,None)
(3) InMemoryTableScan
Output [15]: [_is_valid#12611, _source_file#3294, end_lat#3726, end_lng#3727, end_station_id#3723, end_station_name#3722, ended_at#3719, member_casual#3728, ride_id#3716, rideable_type#3717, start_lat#3724, start_lng#3725, start_station_id#3721, start_station_name#3720, started_at#3718]
Arguments: [_is_valid#12611, _source_file#3294, end_lat#3726, end_lng#3727, end_station_id#3723, end_station_name#3722, ended_at#3719, member_casual#3728, ride_id#3716, rideable_type#3717, start_lat#3724, start_lng#3725, start_station_id#3721, start_station_name#3720, started_at#3718], [isnotnull(_is_valid#12611), _is_valid#12611]
(4) InMemoryRelation
Arguments: [ride_id#3716, rideable_type#3717, started_at#3718, ended_at#3719, start_station_name#3720, start_station_id#3721, end_station_name#3722, end_station_id#3723, start_lat#3724, start_lng#3725, end_lat#3726, end_lng#3727, member_casual#3728, _corrupt_record#3279, _source_file#3294, _is_ride_id_not_empty#12608, _is_ended_after_started#12609, _is_different_stations#12610, _is_valid#12611], CachedRDDBuilder(org.apache.spark.sql.execution.columnar.DefaultCachedBatchSerializer@28f1e8bc,StorageLevel(disk, memory, deserialized, 1 replicas),AdaptiveSparkPlan isFinalPlan=true
+- == Final Plan ==
*(1) Project [ride_id#128, rideable_type#129, started_at#669, ended_at#670, start_station_name#132, start_station_id#133, end_station_name#134, end_station_id#135, start_lat#675, start_lng#676, end_lat#677, end_lng#678, member_casual#140, _corrupt_record#141, _source_file#156, (isnotnull(ride_id#128) AND NOT (trim(ride_id#128, None) = )) AS _is_ride_id_not_empty#695, coalesce((ended_at#670 > started_at#669), false) AS _is_ended_after_started#696, coalesce(NOT (end_station_id#135 = start_station_id#133), false) AS _is_different_stations#697, ((((isnotnull(ride_id#128) AND NOT (trim(ride_id#128, None) = )) AND coalesce((ended_at#670 > started_at#669), false)) AND coalesce(NOT (end_station_id#135 = start_station_id#133), false)) AND isnull(_corrupt_record#141)) AS _is_valid#698]
+- *(1) Project [ride_id#128, rideable_type#129, cast(started_at#130 as timestamp) AS started_at#669, cast(ended_at#131 as timestamp) AS ended_at#670, start_station_name#132, start_station_id#133, end_station_name#134, end_station_id#135, cast(start_lat#136 as double) AS start_lat#675, cast(start_lng#137 as double) AS start_lng#676, cast(end_lat#138 as double) AS end_lat#677, cast(end_lng#139 as double) AS end_lng#678, member_casual#140, _corrupt_record#141, _source_file#156]
+- TableCacheQueryStage 0
+- InMemoryTableScan [_corrupt_record#141, _source_file#156, end_lat#138, end_lng#139, end_station_id#135, end_station_name#134, ended_at#131, member_casual#140, ride_id#128, rideable_type#129, start_lat#136, start_lng#137, start_station_id#133, start_station_name#132, started_at#130]
+- InMemoryRelation [ride_id#128, rideable_type#129, started_at#130, ended_at#131, start_station_name#132, start_station_id#133, end_station_name#134, end_station_id#135, start_lat#136, start_lng#137, end_lat#138, end_lng#139, member_casual#140, _corrupt_record#141, _source_file#156], StorageLevel(disk, memory, deserialized, 1 replicas)
+- *(1) Project [ride_id#128, rideable_type#129, started_at#130, ended_at#131, start_station_name#132, start_station_id#133, end_station_name#134, end_station_id#135, start_lat#136, start_lng#137, end_lat#138, end_lng#139, member_casual#140, _corrupt_record#141, regexp_extract(input_file_name(), [^/]+$, 0) AS _source_file#156]
+- FileScan csv [ride_id#128,rideable_type#129,started_at#130,ended_at#131,start_station_name#132,start_station_id#133,end_station_name#134,end_station_id#135,start_lat#136,start_lng#137,end_lat#138,end_lng#139,member_casual#140,_corrupt_record#141] Batched: false, DataFilters: [], Format: CSV, Location: InMemoryFileIndex(2 paths)[s3a://rzvde-g11-durnev-pavel/raw/citibike_data/202602/202602-citibike-..., PartitionFilters: [], PushedFilters: [], ReadSchema: struct<ride_id:string,rideable_type:string,started_at:string,ended_at:string,start_station_name:s...
+- == Initial Plan ==
Project [ride_id#128, rideable_type#129, started_at#669, ended_at#670, start_station_name#132, start_station_id#133, end_station_name#134, end_station_id#135, start_lat#675, start_lng#676, end_lat#677, end_lng#678, member_casual#140, _corrupt_record#141, _source_file#156, (isnotnull(ride_id#128) AND NOT (trim(ride_id#128, None) = )) AS _is_ride_id_not_empty#695, coalesce((ended_at#670 > started_at#669), false) AS _is_ended_after_started#696, coalesce(NOT (end_station_id#135 = start_station_id#133), false) AS _is_different_stations#697, ((((isnotnull(ride_id#128) AND NOT (trim(ride_id#128, None) = )) AND coalesce((ended_at#670 > started_at#669), false)) AND coalesce(NOT (end_station_id#135 = start_station_id#133), false)) AND isnull(_corrupt_record#141)) AS _is_valid#698]
+- Project [ride_id#128, rideable_type#129, cast(started_at#130 as timestamp) AS started_at#669, cast(ended_at#131 as timestamp) AS ended_at#670, start_station_name#132, start_station_id#133, end_station_name#134, end_station_id#135, cast(start_lat#136 as double) AS start_lat#675, cast(start_lng#137 as double) AS start_lng#676, cast(end_lat#138 as double) AS end_lat#677, cast(end_lng#139 as double) AS end_lng#678, member_casual#140, _corrupt_record#141, _source_file#156]
+- InMemoryTableScan [_corrupt_record#141, _source_file#156, end_lat#138, end_lng#139, end_station_id#135, end_station_name#134, ended_at#131, member_casual#140, ride_id#128, rideable_type#129, start_lat#136, start_lng#137, start_station_id#133, start_station_name#132, started_at#130]
+- InMemoryRelation [ride_id#128, rideable_type#129, started_at#130, ended_at#131, start_station_name#132, start_station_id#133, end_station_name#134, end_station_id#135, start_lat#136, start_lng#137, end_lat#138, end_lng#139, member_casual#140, _corrupt_record#141, _source_file#156], StorageLevel(disk, memory, deserialized, 1 replicas)
+- *(1) Project [ride_id#128, rideable_type#129, started_at#130, ended_at#131, start_station_name#132, start_station_id#133, end_station_name#134, end_station_id#135, start_lat#136, start_lng#137, end_lat#138, end_lng#139, member_casual#140, _corrupt_record#141, regexp_extract(input_file_name(), [^/]+$, 0) AS _source_file#156]
+- FileScan csv [ride_id#128,rideable_type#129,started_at#130,ended_at#131,start_station_name#132,start_station_id#133,end_station_name#134,end_station_id#135,start_lat#136,start_lng#137,end_lat#138,end_lng#139,member_casual#140,_corrupt_record#141] Batched: false, DataFilters: [], Format: CSV, Location: InMemoryFileIndex(2 paths)[s3a://rzvde-g11-durnev-pavel/raw/citibike_data/202602/202602-citibike-..., PartitionFilters: [], PushedFilters: [], ReadSchema: struct<ride_id:string,rideable_type:string,started_at:string,ended_at:string,start_station_name:s...
,None)
(5) InMemoryTableScan
Output [15]: [_corrupt_record#141, _source_file#156, end_lat#138, end_lng#139, end_station_id#135, end_station_name#134, ended_at#131, member_casual#140, ride_id#128, rideable_type#129, start_lat#136, start_lng#137, start_station_id#133, start_station_name#132, started_at#130]
Arguments: [_corrupt_record#141, _source_file#156, end_lat#138, end_lng#139, end_station_id#135, end_station_name#134, ended_at#131, member_casual#140, ride_id#128, rideable_type#129, start_lat#136, start_lng#137, start_station_id#133, start_station_name#132, started_at#130]
(6) InMemoryRelation
Arguments: [ride_id#128, rideable_type#129, started_at#130, ended_at#131, start_station_name#132, start_station_id#133, end_station_name#134, end_station_id#135, start_lat#136, start_lng#137, end_lat#138, end_lng#139, member_casual#140, _corrupt_record#141, _source_file#156], CachedRDDBuilder(org.apache.spark.sql.execution.columnar.DefaultCachedBatchSerializer@28f1e8bc,StorageLevel(disk, memory, deserialized, 1 replicas),*(1) Project [ride_id#128, rideable_type#129, started_at#130, ended_at#131, start_station_name#132, start_station_id#133, end_station_name#134, end_station_id#135, start_lat#136, start_lng#137, end_lat#138, end_lng#139, member_casual#140, _corrupt_record#141, regexp_extract(input_file_name(), [^/]+$, 0) AS _source_file#156]
+- FileScan csv [ride_id#128,rideable_type#129,started_at#130,ended_at#131,start_station_name#132,start_station_id#133,end_station_name#134,end_station_id#135,start_lat#136,start_lng#137,end_lat#138,end_lng#139,member_casual#140,_corrupt_record#141] Batched: false, DataFilters: [], Format: CSV, Location: InMemoryFileIndex(2 paths)[s3a://rzvde-g11-durnev-pavel/raw/citibike_data/202602/202602-citibike-..., PartitionFilters: [], PushedFilters: [], ReadSchema: struct<ride_id:string,rideable_type:string,started_at:string,ended_at:string,start_station_name:s...
,None)
(7) Scan csv
Output [14]: [ride_id#128, rideable_type#129, started_at#130, ended_at#131, start_station_name#132, start_station_id#133, end_station_name#134, end_station_id#135, start_lat#136, start_lng#137, end_lat#138, end_lng#139, member_casual#140, _corrupt_record#141]
Batched: false
Location: InMemoryFileIndex [s3a://rzvde-g11-durnev-pavel/raw/citibike_data/202602/202602-citibike-tripdata-part00.csv, ... 1 entries]
ReadSchema: struct<ride_id:string,rideable_type:string,started_at:string,ended_at:string,start_station_name:string,start_station_id:string,end_station_name:string,end_station_id:string,start_lat:string,start_lng:string,end_lat:string,end_lng:string,member_casual:string,_corrupt_record:string>
(8) Project [codegen id : 1]
Output [15]: [ride_id#128, rideable_type#129, started_at#130, ended_at#131, start_station_name#132, start_station_id#133, end_station_name#134, end_station_id#135, start_lat#136, start_lng#137, end_lat#138, end_lng#139, member_casual#140, _corrupt_record#141, regexp_extract(input_file_name(), [^/]+$, 0) AS _source_file#156]
Input [14]: [ride_id#128, rideable_type#129, started_at#130, ended_at#131, start_station_name#132, start_station_id#133, end_station_name#134, end_station_id#135, start_lat#136, start_lng#137, end_lat#138, end_lng#139, member_casual#140, _corrupt_record#141]
(9) Project
Output [15]: [ride_id#128, rideable_type#129, cast(started_at#130 as timestamp) AS started_at#669, cast(ended_at#131 as timestamp) AS ended_at#670, start_station_name#132, start_station_id#133, end_station_name#134, end_station_id#135, cast(start_lat#136 as double) AS start_lat#675, cast(start_lng#137 as double) AS start_lng#676, cast(end_lat#138 as double) AS end_lat#677, cast(end_lng#139 as double) AS end_lng#678, member_casual#140, _corrupt_record#141, _source_file#156]
Input [15]: [_corrupt_record#141, _source_file#156, end_lat#138, end_lng#139, end_station_id#135, end_station_name#134, ended_at#131, member_casual#140, ride_id#128, rideable_type#129, start_lat#136, start_lng#137, start_station_id#133, start_station_name#132, started_at#130]
(10) Project
Output [19]: [ride_id#128, rideable_type#129, started_at#669, ended_at#670, start_station_name#132, start_station_id#133, end_station_name#134, end_station_id#135, start_lat#675, start_lng#676, end_lat#677, end_lng#678, member_casual#140, _corrupt_record#141, _source_file#156, (isnotnull(ride_id#128) AND NOT (trim(ride_id#128, None) = )) AS _is_ride_id_not_empty#695, coalesce((ended_at#670 > started_at#669), false) AS _is_ended_after_started#696, coalesce(NOT (end_station_id#135 = start_station_id#133), false) AS _is_different_stations#697, ((((isnotnull(ride_id#128) AND NOT (trim(ride_id#128, None) = )) AND coalesce((ended_at#670 > started_at#669), false)) AND coalesce(NOT (end_station_id#135 = start_station_id#133), false)) AND isnull(_corrupt_record#141)) AS _is_valid#698]
Input [15]: [ride_id#128, rideable_type#129, started_at#669, ended_at#670, start_station_name#132, start_station_id#133, end_station_name#134, end_station_id#135, start_lat#675, start_lng#676, end_lat#677, end_lng#678, member_casual#140, _corrupt_record#141, _source_file#156]
(11) AdaptiveSparkPlan
Output [19]: [ride_id#128, rideable_type#129, started_at#669, ended_at#670, start_station_name#132, start_station_id#133, end_station_name#134, end_station_id#135, start_lat#675, start_lng#676, end_lat#677, end_lng#678, member_casual#140, _corrupt_record#141, _source_file#156, _is_ride_id_not_empty#695, _is_ended_after_started#696, _is_different_stations#697, _is_valid#698]
Arguments: isFinalPlan=false
(12) Filter
Input [15]: [_is_valid#12611, _source_file#3294, end_lat#3726, end_lng#3727, end_station_id#3723, end_station_name#3722, ended_at#3719, member_casual#3728, ride_id#3716, rideable_type#3717, start_lat#3724, start_lng#3725, start_station_id#3721, start_station_name#3720, started_at#3718]
Condition : (isnotnull(_is_valid#12611) AND _is_valid#12611)
(13) Project
Output [18]: [ride_id#3716, rideable_type#3717, started_at#3718, ended_at#3719, start_station_name#3720, start_station_id#3721, end_station_name#3722, end_station_id#3723, start_lat#3724, start_lng#3725, end_lat#3726, end_lng#3727, member_casual#3728, _source_file#3294, date_format(started_at#3718, yyyy, Some(UTC)) AS year#13640, date_format(started_at#3718, MM, Some(UTC)) AS month#13641, date_format(started_at#3718, yyyy, Some(UTC)) AS _w0#13642, date_format(started_at#3718, MM, Some(UTC)) AS _w1#13643]
Input [15]: [_is_valid#12611, _source_file#3294, end_lat#3726, end_lng#3727, end_station_id#3723, end_station_name#3722, ended_at#3719, member_casual#3728, ride_id#3716, rideable_type#3717, start_lat#3724, start_lng#3725, start_station_id#3721, start_station_name#3720, started_at#3718]
(14) Exchange
Input [18]: [ride_id#3716, rideable_type#3717, started_at#3718, ended_at#3719, start_station_name#3720, start_station_id#3721, end_station_name#3722, end_station_id#3723, start_lat#3724, start_lng#3725, end_lat#3726, end_lng#3727, member_casual#3728, _source_file#3294, year#13640, month#13641, _w0#13642, _w1#13643]
Arguments: hashpartitioning(start_station_id#3721, _w0#13642, _w1#13643, 200), ENSURE_REQUIREMENTS, [plan_id=3105]
(15) Sort
Input [18]: [ride_id#3716, rideable_type#3717, started_at#3718, ended_at#3719, start_station_name#3720, start_station_id#3721, end_station_name#3722, end_station_id#3723, start_lat#3724, start_lng#3725, end_lat#3726, end_lng#3727, member_casual#3728, _source_file#3294, year#13640, month#13641, _w0#13642, _w1#13643]
Arguments: [start_station_id#3721 ASC NULLS FIRST, _w0#13642 ASC NULLS FIRST, _w1#13643 ASC NULLS FIRST, started_at#3718 ASC NULLS FIRST, ride_id#3716 ASC NULLS FIRST], false, 0
(16) Window
Input [18]: [ride_id#3716, rideable_type#3717, started_at#3718, ended_at#3719, start_station_name#3720, start_station_id#3721, end_station_name#3722, end_station_id#3723, start_lat#3724, start_lng#3725, end_lat#3726, end_lng#3727, member_casual#3728, _source_file#3294, year#13640, month#13641, _w0#13642, _w1#13643]
Arguments: [row_number() windowspecdefinition(start_station_id#3721, _w0#13642, _w1#13643, started_at#3718 ASC NULLS FIRST, ride_id#3716 ASC NULLS FIRST, specifiedwindowframe(RowFrame, unboundedpreceding$(), currentrow$())) AS _start_station_ride_num#13639], [start_station_id#3721, _w0#13642, _w1#13643], [started_at#3718 ASC NULLS FIRST, ride_id#3716 ASC NULLS FIRST]
(17) Project
Output [18]: [ride_id#3716, rideable_type#3717, started_at#3718, ended_at#3719, start_station_name#3720, start_station_id#3721, end_station_name#3722, end_station_id#3723, start_lat#3724, start_lng#3725, end_lat#3726, end_lng#3727, member_casual#3728, _source_file#3294, 2026-11-01 20:50:07.599499 AS _processed_dttm#13637, _start_station_ride_num#13639, year#13640, month#13641]
Input [19]: [ride_id#3716, rideable_type#3717, started_at#3718, ended_at#3719, start_station_name#3720, start_station_id#3721, end_station_name#3722, end_station_id#3723, start_lat#3724, start_lng#3725, end_lat#3726, end_lng#3727, member_casual#3728, _source_file#3294, year#13640, month#13641, _w0#13642, _w1#13643, _start_station_ride_num#13639]
(18) AdaptiveSparkPlan
Output [18]: [ride_id#3716, rideable_type#3717, started_at#3718, ended_at#3719, start_station_name#3720, start_station_id#3721, end_station_name#3722, end_station_id#3723, start_lat#3724, start_lng#3725, end_lat#3726, end_lng#3727, member_casual#3728, _source_file#3294, _processed_dttm#13637, _start_station_ride_num#13639, year#13640, month#13641]
Arguments: isFinalPlan=false
(19) TableCacheQueryStage
Output [18]: [ride_id#3716, rideable_type#3717, started_at#3718, ended_at#3719, start_station_name#3720, start_station_id#3721, end_station_name#3722, end_station_id#3723, start_lat#3724, start_lng#3725, end_lat#3726, end_lng#3727, member_casual#3728, _source_file#3294, _processed_dttm#13637, _start_station_ride_num#13639, year#13640, month#13641]
Arguments: 0
(20) Exchange
Input [18]: [ride_id#3716, rideable_type#3717, started_at#3718, ended_at#3719, start_station_name#3720, start_station_id#3721, end_station_name#3722, end_station_id#3723, start_lat#3724, start_lng#3725, end_lat#3726, end_lng#3727, member_casual#3728, _source_file#3294, _processed_dttm#13637, _start_station_ride_num#13639, year#13640, month#13641]
Arguments: hashpartitioning(year#13640, month#13641, 200), REPARTITION_BY_COL, [plan_id=3129]
(21) ShuffleQueryStage
Output [18]: [ride_id#3716, rideable_type#3717, started_at#3718, ended_at#3719, start_station_name#3720, start_station_id#3721, end_station_name#3722, end_station_id#3723, start_lat#3724, start_lng#3725, end_lat#3726, end_lng#3727, member_casual#3728, _source_file#3294, _processed_dttm#13637, _start_station_ride_num#13639, year#13640, month#13641]
Arguments: 1
(22) AQEShuffleRead
Input [18]: [ride_id#3716, rideable_type#3717, started_at#3718, ended_at#3719, start_station_name#3720, start_station_id#3721, end_station_name#3722, end_station_id#3723, start_lat#3724, start_lng#3725, end_lat#3726, end_lng#3727, member_casual#3728, _source_file#3294, _processed_dttm#13637, _start_station_ride_num#13639, year#13640, month#13641]
Arguments: coalesced
(23) Project [codegen id : 1]
Output [18]: [ride_id#3716, rideable_type#3717, started_at#3718, ended_at#3719, start_station_name#3720, start_station_id#3721, end_station_name#3722, end_station_id#3723, start_lat#3724, start_lng#3725, end_lat#3726, end_lng#3727, member_casual#3728, _source_file#3294, _processed_dttm#13637, _start_station_ride_num#13639, empty2null(year#13640) AS year#16284, empty2null(month#13641) AS month#16285]
Input [18]: [ride_id#3716, rideable_type#3717, started_at#3718, ended_at#3719, start_station_name#3720, start_station_id#3721, end_station_name#3722, end_station_id#3723, start_lat#3724, start_lng#3725, end_lat#3726, end_lng#3727, member_casual#3728, _source_file#3294, _processed_dttm#13637, _start_station_ride_num#13639, year#13640, month#13641]
(24) Sort [codegen id : 1]
Input [18]: [ride_id#3716, rideable_type#3717, started_at#3718, ended_at#3719, start_station_name#3720, start_station_id#3721, end_station_name#3722, end_station_id#3723, start_lat#3724, start_lng#3725, end_lat#3726, end_lng#3727, member_casual#3728, _source_file#3294, _processed_dttm#13637, _start_station_ride_num#13639, year#16284, month#16285]
Arguments: [year#16284 ASC NULLS FIRST, month#16285 ASC NULLS FIRST], false, 0
(25) WriteFiles
Input [18]: [ride_id#3716, rideable_type#3717, started_at#3718, ended_at#3719, start_station_name#3720, start_station_id#3721, end_station_name#3722, end_station_id#3723, start_lat#3724, start_lng#3725, end_lat#3726, end_lng#3727, member_casual#3728, _source_file#3294, _processed_dttm#13637, _start_station_ride_num#13639, year#16284, month#16285]
(26) Execute InsertIntoHadoopFsRelationCommand
Input: []
Arguments: s3a://rzvde-g11-durnev-pavel/raw_valid/citibike_data, false, [year#16284, month#16285], Parquet, [partitionOverwriteMode=dynamic, __partition_columns=["year","month"], path=s3a://rzvde-g11-durnev-pavel/raw_valid/citibike_data], Overwrite, [ride_id, rideable_type, started_at, ended_at, start_station_name, start_station_id, end_station_name, end_station_id, start_lat, start_lng, end_lat, end_lng, member_casual, _source_file, _processed_dttm, _start_station_ride_num, year, month]
(27) Exchange
Input [18]: [ride_id#3716, rideable_type#3717, started_at#3718, ended_at#3719, start_station_name#3720, start_station_id#3721, end_station_name#3722, end_station_id#3723, start_lat#3724, start_lng#3725, end_lat#3726, end_lng#3727, member_casual#3728, _source_file#3294, _processed_dttm#13637, _start_station_ride_num#13639, year#13640, month#13641]
Arguments: hashpartitioning(year#13640, month#13641, 200), REPARTITION_BY_COL, [plan_id=3098]
(28) Project
Output [18]: [ride_id#3716, rideable_type#3717, started_at#3718, ended_at#3719, start_station_name#3720, start_station_id#3721, end_station_name#3722, end_station_id#3723, start_lat#3724, start_lng#3725, end_lat#3726, end_lng#3727, member_casual#3728, _source_file#3294, _processed_dttm#13637, _start_station_ride_num#13639, empty2null(year#13640) AS year#16284, empty2null(month#13641) AS month#16285]
Input [18]: [ride_id#3716, rideable_type#3717, started_at#3718, ended_at#3719, start_station_name#3720, start_station_id#3721, end_station_name#3722, end_station_id#3723, start_lat#3724, start_lng#3725, end_lat#3726, end_lng#3727, member_casual#3728, _source_file#3294, _processed_dttm#13637, _start_station_ride_num#13639, year#13640, month#13641]
(29) Sort
Input [18]: [ride_id#3716, rideable_type#3717, started_at#3718, ended_at#3719, start_station_name#3720, start_station_id#3721, end_station_name#3722, end_station_id#3723, start_lat#3724, start_lng#3725, end_lat#3726, end_lng#3727, member_casual#3728, _source_file#3294, _processed_dttm#13637, _start_station_ride_num#13639, year#16284, month#16285]
Arguments: [year#16284 ASC NULLS FIRST, month#16285 ASC NULLS FIRST], false, 0
(30) WriteFiles
Input [18]: [ride_id#3716, rideable_type#3717, started_at#3718, ended_at#3719, start_station_name#3720, start_station_id#3721, end_station_name#3722, end_station_id#3723, start_lat#3724, start_lng#3725, end_lat#3726, end_lng#3727, member_casual#3728, _source_file#3294, _processed_dttm#13637, _start_station_ride_num#13639, year#16284, month#16285]
(31) Execute InsertIntoHadoopFsRelationCommand
Input: []
Arguments: s3a://rzvde-g11-durnev-pavel/raw_valid/citibike_data, false, [year#16284, month#16285], Parquet, [partitionOverwriteMode=dynamic, __partition_columns=["year","month"], path=s3a://rzvde-g11-durnev-pavel/raw_valid/citibike_data], Overwrite, [ride_id, rideable_type, started_at, ended_at, start_station_name, start_station_id, end_station_name, end_station_id, start_lat, start_lng, end_lat, end_lng, member_casual, _source_file, _processed_dttm, _start_station_ride_num, year, month]
(32) AdaptiveSparkPlan
Output: []
Arguments: isFinalPlan=true