diff --git a/core/src/main/java/org/apache/iceberg/BaseReplacePartitions.java b/core/src/main/java/org/apache/iceberg/BaseReplacePartitions.java index 7f57195edc25..1074f1247ee9 100644 --- a/core/src/main/java/org/apache/iceberg/BaseReplacePartitions.java +++ b/core/src/main/java/org/apache/iceberg/BaseReplacePartitions.java @@ -55,7 +55,7 @@ public ReplacePartitions validateAppendOnly() { @Override public List apply(TableMetadata base) { - if (writeSpec().fields().size() <= 0) { + if (!addedFiles().isEmpty() && writeSpec().fields().size() <= 0) { // replace all data in an unpartitioned table deleteByRowFilter(Expressions.alwaysTrue()); } diff --git a/spark2/src/main/java/org/apache/iceberg/spark/source/Writer.java b/spark2/src/main/java/org/apache/iceberg/spark/source/Writer.java index 8f093210223e..4a7e0c24cfa1 100644 --- a/spark2/src/main/java/org/apache/iceberg/spark/source/Writer.java +++ b/spark2/src/main/java/org/apache/iceberg/spark/source/Writer.java @@ -184,17 +184,10 @@ private void append(WriterCommitMessage[] messages) { } private void replacePartitions(WriterCommitMessage[] messages) { - Iterable files = files(messages); - - if (!files.iterator().hasNext()) { - LOG.info("Dyanmic overwrite is empty, skipping commit"); - return; - } - ReplacePartitions dynamicOverwrite = table.newReplacePartitions(); int numFiles = 0; - for (DataFile file : files) { + for (DataFile file : files(messages)) { numFiles += 1; dynamicOverwrite.addFile(file); } diff --git a/spark3/src/main/java/org/apache/iceberg/spark/source/SparkWrite.java b/spark3/src/main/java/org/apache/iceberg/spark/source/SparkWrite.java index 4cc37c8cfd7f..a3da366768de 100644 --- a/spark3/src/main/java/org/apache/iceberg/spark/source/SparkWrite.java +++ b/spark3/src/main/java/org/apache/iceberg/spark/source/SparkWrite.java @@ -262,17 +262,10 @@ public void commit(WriterCommitMessage[] messages) { private class DynamicOverwrite extends BaseBatchWrite { @Override public void commit(WriterCommitMessage[] messages) { - Iterable files = files(messages); - - if (!files.iterator().hasNext()) { - LOG.info("Dynamic overwrite is empty, skipping commit"); - return; - } - ReplacePartitions dynamicOverwrite = table.newReplacePartitions(); int numFiles = 0; - for (DataFile file : files) { + for (DataFile file : files(messages)) { numFiles += 1; dynamicOverwrite.addFile(file); }