aokolnychyi commented on code in PR #9020: URL: https://github.com/apache/iceberg/pull/9020#discussion_r1388703856
########## spark/v3.5/spark/src/main/java/org/apache/iceberg/spark/actions/RewriteManifestsSparkAction.java: ########## @@ -339,18 +369,82 @@ private ManifestWriterFactory manifestWriters() { (long) (1.2 * targetManifestSizeBytes)); } - private static MapPartitionsFunction<Row, ManifestFile> toManifests( - ManifestWriterFactory writers, - Types.StructType combinedPartitionType, - Types.StructType partitionType, - StructType sparkType) { + private static class WriteDataManifests extends WriteManifests<DataFile> { - return rows -> { - Types.StructType combinedFileType = DataFile.getType(combinedPartitionType); - Types.StructType manifestFileType = DataFile.getType(partitionType); - SparkDataFile wrapper = new SparkDataFile(combinedFileType, manifestFileType, sparkType); + WriteDataManifests( + ManifestWriterFactory manifestWriters, + Types.StructType combinedPartitionType, + Types.StructType partitionType, + StructType sparkFileType) { + super(manifestWriters, combinedPartitionType, partitionType, sparkFileType); + } + + @Override + protected SparkDataFile newFileWrapper() { + return new SparkDataFile(combinedFileType(), fileType(), sparkFileType()); + } + + @Override + protected RollingManifestWriter<DataFile> newManifestWriter() { + return writers().newRollingManifestWriter(); + } + } + + private static class WriteDeleteManifests extends WriteManifests<DeleteFile> { + + WriteDeleteManifests( + ManifestWriterFactory manifestWriters, + Types.StructType combinedFileType, + Types.StructType fileType, + StructType sparkFileType) { + super(manifestWriters, combinedFileType, fileType, sparkFileType); + } + + @Override + protected SparkDeleteFile newFileWrapper() { + return new SparkDeleteFile(combinedFileType(), fileType(), sparkFileType()); + } + + @Override + protected RollingManifestWriter<DeleteFile> newManifestWriter() { + return writers().newRollingDeleteManifestWriter(); + } + } + + private abstract static class WriteManifests<F extends ContentFile<F>> Review Comment: I follow the same pattern we have in other actions: create a class that implements a transform in Spark. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: issues-unsubscr...@iceberg.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org --------------------------------------------------------------------- To unsubscribe, e-mail: issues-unsubscr...@iceberg.apache.org For additional commands, e-mail: issues-h...@iceberg.apache.org