@@ -38,7 +38,6 @@ use super::{CompactionExecutor, RewriteFilesStat};
3838use crate :: CompactionError ;
3939use crate :: config:: CompactionExecutionConfig ;
4040use crate :: error:: Result ;
41- use crate :: executor:: iceberg_writer:: rolling_iceberg_writer;
4241pub mod datafusion_processor;
4342use super :: { RewriteFilesRequest , RewriteFilesResponse } ;
4443pub mod file_scan_task_table_provider;
@@ -167,6 +166,14 @@ pub fn build_iceberg_data_file_writer(
167166 partition_spec : Arc < PartitionSpec > ,
168167 execution_config : Arc < CompactionExecutionConfig > ,
169168) -> Result < Box < dyn IcebergWriter > > {
169+ let target_file_size =
170+ usize:: try_from ( execution_config. target_file_size_bytes ) . map_err ( |_| {
171+ CompactionError :: Config ( format ! (
172+ "target_file_size_bytes {} exceeds platform usize" ,
173+ execution_config. target_file_size_bytes
174+ ) )
175+ } ) ?;
176+
170177 let data_file_builder = {
171178 let parquet_writer_builder = ParquetWriterBuilder :: new (
172179 execution_config. write_parquet_properties . clone ( ) ,
@@ -180,27 +187,18 @@ pub fn build_iceberg_data_file_writer(
180187 iceberg:: spec:: DataFileFormat :: Parquet ,
181188 ) ;
182189
183- // Noop wrapper for `DataFileWriterBuilder`
184190 let rolling_writer_builder = RollingFileWriterBuilder :: new (
185191 parquet_writer_builder,
186- usize :: MAX , // No rolling based on row count
192+ target_file_size ,
187193 file_io,
188194 location_generator,
189195 file_name_generator,
190- ) ;
196+ )
197+ . with_max_concurrent_closes ( execution_config. max_concurrent_closes ) ;
191198
192199 DataFileWriterBuilder :: new ( rolling_writer_builder)
193200 } ;
194201
195- let rolling_iceberg_writer_builder =
196- rolling_iceberg_writer:: RollingIcebergWriterBuilder :: new ( data_file_builder)
197- . with_target_file_size ( execution_config. target_file_size_bytes )
198- . with_max_concurrent_closes ( execution_config. max_concurrent_closes )
199- . with_dynamic_size_estimation ( execution_config. enable_dynamic_size_estimation )
200- . with_size_estimation_smoothing_factor (
201- execution_config. size_estimation_smoothing_factor ,
202- ) ;
203-
204202 let partition_splitter = if partition_spec. is_unpartitioned ( ) {
205203 None
206204 } else {
@@ -211,7 +209,7 @@ pub fn build_iceberg_data_file_writer(
211209 } ;
212210
213211 let iceberg_task_writer = TaskWriter :: new_with_partition_splitter (
214- rolling_iceberg_writer_builder ,
212+ data_file_builder ,
215213 true ,
216214 schema,
217215 partition_spec,
0 commit comments