add delta lake to iceberg blueprint and IT - #4103
Conversation
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #4103 +/- ##
=========================================
Coverage 38.01% 38.01%
Complexity 511 511
=========================================
Files 195 195
Lines 11761 11761
Branches 1181 1181
=========================================
Hits 4471 4471
Misses 6924 6924
Partials 366 366
🚀 New features to boost your workflow:
|
f0d7c7e to
d642c4b
Compare
f6ff2b9 to
353123c
Compare
Summary of ChangesHello, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed! This pull request adds a new Dataflow template that enables data migration from Delta Lake tables to Apache Iceberg tables. It includes the necessary YAML definitions, Java interface files, and updates to the template generation tooling to support this new pipeline. Additionally, an integration test has been included to verify the pipeline's correctness. Highlights
Using Gemini Code AssistThe full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips. Invoking Gemini You can request assistance from Gemini at any point by creating a comment using either
Customization To customize the Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a Limitations & Feedback Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counterproductive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for GitHub and other Google products, sign up here. Footnotes
|
There was a problem hiding this comment.
Code Review
This pull request introduces the Delta Lake to Iceberg batch pipeline template, including its YAML definition, Java metadata interface, documentation, and integration tests. It also updates the Python template generator to conditionally import the Beam SDK Default options. The feedback suggests improving the YAML syntax for requirements to use standard list notation and dynamically calculating the parquet file size in the integration test to avoid hardcoding.
e6ed587 to
a9b0bcf
Compare
| import org.apache.beam.sdk.options.Validation; | ||
|
|
||
| @Template( | ||
| name = "DeltaLake_To_Iceberg_Yaml", |
There was a problem hiding this comment.
Similar to what we have in Job builder currently. Let's introduce a Lakehouse specific sink (that wraps Iceberg sink) and use that from this and other blueprints that write to Lakehouse. Also, pls update the naming (step names, documentation etc.) accordingly.
|
|
||
| @TemplateParameter.Text( | ||
| order = 3, | ||
| name = "table", |
There was a problem hiding this comment.
This is the Lakehouse table ? Lat's make this clear in the naming pls.
|
|
||
| @TemplateParameter.Text( | ||
| order = 5, | ||
| name = "catalogProperties", |
There was a problem hiding this comment.
Same for this and other configs. Let's make it clear if we are configuring Delta Lake or Lakehouse here.
There was a problem hiding this comment.
updated all configs associated with iceberg and changed to lakehouse
| "import com.google.cloud.teleport.metadata.TemplateCategory;", | ||
| "import com.google.cloud.teleport.metadata.TemplateParameter;", | ||
| ] | ||
| if has_defaults: |
There was a problem hiding this comment.
Can't we just add these to the list without the condition ?
There was a problem hiding this comment.
there are a few templates/blueprints that don't have defaults so this is still needed for now
| @@ -0,0 +1,75 @@ | |||
| template: | |||
| name: "DeltaLake_To_Iceberg_Yaml" | |||
There was a problem hiding this comment.
Ditto regarding naming with "Lakehouse".
| gcsClient.createArtifact(deltaTableDir + "/part-00000.parquet", parquetBytes); | ||
|
|
||
| // Create and upload Delta Lake transaction log | ||
| String commitContent = |
There was a problem hiding this comment.
Please use the Delta client to write instead of manually writing commit logs. For example,
No description provided.