-
Notifications
You must be signed in to change notification settings - Fork 4.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Managed Iceberg dynamic destinations #32565
Conversation
assign set of reviewers |
Assigning reviewers. If you would like to opt out of this review, comment R: @Abacn for label java. Available commands:
The PR bot will only process comments in the main thread (not review comments). |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks!
LGTM
...ceberg/src/main/java/org/apache/beam/sdk/io/iceberg/IcebergWriteSchemaTransformProvider.java
Outdated
Show resolved
Hide resolved
...ava/io/iceberg/src/main/java/org/apache/beam/sdk/io/iceberg/PortableIcebergDestinations.java
Show resolved
Hide resolved
...ceberg/src/main/java/org/apache/beam/sdk/io/iceberg/IcebergWriteSchemaTransformProvider.java
Show resolved
Hide resolved
...ceberg/src/main/java/org/apache/beam/sdk/io/iceberg/IcebergWriteSchemaTransformProvider.java
Show resolved
Hide resolved
sdks/java/io/iceberg/src/main/java/org/apache/beam/sdk/io/iceberg/AssignDestinations.java
Outdated
Show resolved
Hide resolved
Thanks. LGTM. |
* iceberg dynamic destinations * update CHANGES * spotless * fix null error * fix some tests * fix some tests * better row filter error message * clarify keep-only-drop mutual exclusivity * use constants for field names
Fixes #32365
This PR adds support for writing to dynamic Iceberg destinations, meaning that one transform instance can write to multiple Iceberg tables.
IcebergIO is offered as a Managed transform, which makes it a portable transform. Instead of offering a function of some sort, users can specify a String template and we will substitute in the appropriate record field values to determine the destination (see RowStringInterpolator for more details and examples)
For more information on portable dynamic destinations, see #32365