Skip to content

Implement Iceberg Side-Input Table Cache Integration with Fallback - #40080

Merged
jrmccluskey merged 3 commits into
apache:masterfrom
jrmccluskey:feat/iceberg-side-input-table-cache-pr3
Sep 16, 2026
Merged

jrmccluskey merged 3 commits into
apache:masterfrom
jrmccluskey:feat/iceberg-side-input-table-cache-pr3

Conversation

@jrmccluskey

Copy link
Copy Markdown
Contributor

Wires through the Iceberg side-input table cache transform into the IO but does not expose the API to users yet. Largely handled by introducing overloads of constuctors and methods to determine if a side input is being used.

Part of #39723


Thank you for your contribution! Follow this checklist to help us incorporate your contribution quickly and easily:

  • Mention the appropriate issue in your description (for example: addresses #123), if applicable. This will automatically add a link to the pull request in the issue. If you would like the issue to automatically close on merging the pull request, comment fixes #<ISSUE NUMBER> instead.
  • Update CHANGES.md with noteworthy changes.
  • If this contribution is large, please file an Apache Individual Contributor License Agreement.

See the Contributor Guide for more tips on how to make review process smoother.

To check the build health, please visit https://github.com/apache/beam/blob/master/.test-infra/BUILD_STATUS.md

GitHub Actions Tests Status (on master branch)

Build python source distribution and wheels
Python tests
Java tests
Go tests

See CI.md for more information about GitHub Actions CI or the workflows README to see a list of phrases to trigger workflows.

@github-actions

github-actions Bot commented Sep 9, 2026

Copy link
Copy Markdown
Contributor

Assigning reviewers:

R: @Abacn for label java.

Note: If you would like to opt out of this review, comment assign to next reviewer.

Available commands:

  • stop reviewer notifications - opt out of the automated review tooling
  • remind me after tests pass - tag the comment author after tests pass
  • waiting on author - shift the attention set back to the author (any comment or push by the author will return the attention set to the reviewers)

The PR bot will only process comments in the main thread (not review comments).

@ahmedabu98

Copy link
Copy Markdown
Contributor

R: @ahmedabu98

@github-actions

Copy link
Copy Markdown
Contributor

Stopping reviewer notifications for this pull request: review requested by someone other than the bot, ceding control. If you'd like to restart, comment assign set of reviewers

@ahmedabu98 ahmedabu98 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Overall looks good, just a couple comments

Comment on lines +142 to +149
String canonicalTableId;
try {
canonicalTableId =
IcebergUtils.tableIdentifierToString(
IcebergUtils.parseTableIdentifier(tableIdentifier));
} catch (Exception e) {
canonicalTableId = tableIdentifier.trim();
}

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think this is necessary?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

removed

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry I mean the roundtrip itself feels unnecessary (i.e. we can just use tableIdentifier directly without doing the tableIdentifierToString(parseTableIdentifier(...)) roundtrip)

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Okay yeah this is unnecessary. It only makes changes if, for some reason, the underlying table identifiers being passed aren't formatted correctly.

Comment on lines +193 to +198
} else if (tableSpec != null) {
spec = tableSpec.getPartitionSpec();
if (data.getSchema().getFieldCount() == tableSpec.getSchema().columns().size()) {
schema = tableSpec.getSchema();
}
checkStateNotNull(cachedSpecIds).put(tableIdentifier, tableSpec.getSpecId());

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we move this to be the first check? So we can make sure cachedSpecIds is populated even when the user gives a createConfig

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Gotcha, flipped the logic here to have this check execute first

@github-actions github-actions Bot added the iceberg Iceberg IO connector label Sep 15, 2026

@ahmedabu98 ahmedabu98 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, thanks Jack!

@jrmccluskey
jrmccluskey merged commit 333a778 into apache:master Sep 16, 2026
20 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants