This is an automated email from the ASF dual-hosted git repository.
amogh-jahagirdar pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/iceberg.git
The following commit(s) were added to refs/heads/main by this push:
new 17d375a0ed Spark: Use merge append by default for streaming writes
(#18332)
17d375a0ed is described below
commit 17d375a0ed3a9213935f59e04404b83c64e982a6
Author: Hongyue/Steve Zhang <[email protected]>
AuthorDate: Mon Oct 5 13:39:22 2026 -0700
Spark: Use merge append by default for streaming writes (#18332)
Spark 3.5, 4.0, 4.1, 4.2: Use merge append by default for streaming writes
Flip the default of the `use-merge-append-for-streaming` write option from
false to true, so streaming appends merge manifests on commit instead of
accumulating a small manifest per commit.
The option was added in 1.12 (#17347, #17403) defaulting to fast append to
give users a release to adjust in case anything relied on the one-manifest-
per-commit behavior. Now that 1.12 has shipped, flip the default for 1.13.
Fast append remains available by setting the option to false.
---
docs/docs/spark-configuration.md | 2 +-
.../spark/src/main/java/org/apache/iceberg/spark/SparkWriteOptions.java | 2 +-
.../spark/src/main/java/org/apache/iceberg/spark/SparkWriteOptions.java | 2 +-
.../spark/src/main/java/org/apache/iceberg/spark/SparkWriteOptions.java | 2 +-
.../spark/src/main/java/org/apache/iceberg/spark/SparkWriteOptions.java | 2 +-
5 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/docs/docs/spark-configuration.md b/docs/docs/spark-configuration.md
index 0b57496072..857f7c40f3 100644
--- a/docs/docs/spark-configuration.md
+++ b/docs/docs/spark-configuration.md
@@ -270,7 +270,7 @@ df.writeTo("catalog.db.table")
| delete-granularity | file | Override this table's delete granularity for
this write |
| shred-variants | false | Overrides this table's write.parquet.shred-variants
for this write |
| variant-inference-buffer-size | 100 | Overrides this table's
write.parquet.variant-inference-buffer-size for this write |
-| use-merge-append-for-streaming | false | Use a merge append instead of a
fast append for streaming appends, so manifests are merged on commit rather
than accumulating as small manifests |
+| use-merge-append-for-streaming | true | Use a merge append instead of a fast
append for streaming appends, so manifests are merged on commit rather than
accumulating as small manifests |
CommitMetadata provides an interface to add custom metadata to a snapshot
summary during a SQL execution, which can be beneficial for purposes such as
auditing or change tracking. If properties start with `snapshot-property.`,
then that prefix will be removed from each property. Here is an example:
diff --git
a/spark/v3.5/spark/src/main/java/org/apache/iceberg/spark/SparkWriteOptions.java
b/spark/v3.5/spark/src/main/java/org/apache/iceberg/spark/SparkWriteOptions.java
index 09bfd762b7..25f849ed73 100644
---
a/spark/v3.5/spark/src/main/java/org/apache/iceberg/spark/SparkWriteOptions.java
+++
b/spark/v3.5/spark/src/main/java/org/apache/iceberg/spark/SparkWriteOptions.java
@@ -89,5 +89,5 @@ public class SparkWriteOptions {
// Uses the merge append instead of fast append for streaming appends
public static final String USE_MERGE_APPEND_FOR_STREAMING =
"use-merge-append-for-streaming";
- public static final boolean USE_MERGE_APPEND_FOR_STREAMING_DEFAULT = false;
+ public static final boolean USE_MERGE_APPEND_FOR_STREAMING_DEFAULT = true;
}
diff --git
a/spark/v4.0/spark/src/main/java/org/apache/iceberg/spark/SparkWriteOptions.java
b/spark/v4.0/spark/src/main/java/org/apache/iceberg/spark/SparkWriteOptions.java
index b7a5597aea..6580e8532a 100644
---
a/spark/v4.0/spark/src/main/java/org/apache/iceberg/spark/SparkWriteOptions.java
+++
b/spark/v4.0/spark/src/main/java/org/apache/iceberg/spark/SparkWriteOptions.java
@@ -95,5 +95,5 @@ public class SparkWriteOptions {
// Uses the merge append instead of fast append for streaming appends
public static final String USE_MERGE_APPEND_FOR_STREAMING =
"use-merge-append-for-streaming";
- public static final boolean USE_MERGE_APPEND_FOR_STREAMING_DEFAULT = false;
+ public static final boolean USE_MERGE_APPEND_FOR_STREAMING_DEFAULT = true;
}
diff --git
a/spark/v4.1/spark/src/main/java/org/apache/iceberg/spark/SparkWriteOptions.java
b/spark/v4.1/spark/src/main/java/org/apache/iceberg/spark/SparkWriteOptions.java
index d7a62e2b1e..f56f549529 100644
---
a/spark/v4.1/spark/src/main/java/org/apache/iceberg/spark/SparkWriteOptions.java
+++
b/spark/v4.1/spark/src/main/java/org/apache/iceberg/spark/SparkWriteOptions.java
@@ -95,5 +95,5 @@ public class SparkWriteOptions {
// Uses the merge append instead of fast append for streaming appends
public static final String USE_MERGE_APPEND_FOR_STREAMING =
"use-merge-append-for-streaming";
- public static final boolean USE_MERGE_APPEND_FOR_STREAMING_DEFAULT = false;
+ public static final boolean USE_MERGE_APPEND_FOR_STREAMING_DEFAULT = true;
}
diff --git
a/spark/v4.2/spark/src/main/java/org/apache/iceberg/spark/SparkWriteOptions.java
b/spark/v4.2/spark/src/main/java/org/apache/iceberg/spark/SparkWriteOptions.java
index d7a62e2b1e..f56f549529 100644
---
a/spark/v4.2/spark/src/main/java/org/apache/iceberg/spark/SparkWriteOptions.java
+++
b/spark/v4.2/spark/src/main/java/org/apache/iceberg/spark/SparkWriteOptions.java
@@ -95,5 +95,5 @@ public class SparkWriteOptions {
// Uses the merge append instead of fast append for streaming appends
public static final String USE_MERGE_APPEND_FOR_STREAMING =
"use-merge-append-for-streaming";
- public static final boolean USE_MERGE_APPEND_FOR_STREAMING_DEFAULT = false;
+ public static final boolean USE_MERGE_APPEND_FOR_STREAMING_DEFAULT = true;
}