Skip to content
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

feat(iceberg): support iceberg engine connection #20298

Merged
merged 15 commits into from
Feb 10, 2025

Conversation

chenzl25
Copy link
Contributor

@chenzl25 chenzl25 commented Jan 24, 2025

I hereby agree to the terms of the RisingWave Labs, Inc. Contributor License Agreement.

What's changed and what's your intention?

  • Related: Tracking: Iceberg engine table #19418
  • Introduce a session variable iceberg_engine_connection to require users to provide their own bucket and catalog for the iceberg engine via iceberg connection. With this config, it can make us much easier to share iceberg tables with users, since the underlying warehouse is managed by users and they can have a better control of the warehouse credential. No compaction would be supported currently.

Example

create secret my_secret with (
  backend = 'meta'
) as 'hummockadmin';

create connection my_conn
with (
    type = 'iceberg',
    warehouse.path = 's3://hummock001/iceberg_connection',
    s3.access.key = secret my_secret,
    s3.secret.key = secret my_secret,
    s3.endpoint = 'http://127.0.0.1:9301',
    s3.region = 'us-west-2',
    catalog.type = 'storage',
);

-- Alter the system variable
alter system set iceberg_engine_connection = 'public.my_conn';
-- Alter the current session variable
set iceberg_engine_connection = 'public.my_conn';

create table t(id int primary key, name varchar) with(commit_checkpoint_interval = 1) engine = iceberg;

Checklist

  • I have written necessary rustdoc comments.
  • I have added necessary unit tests and integration tests.
  • I have added test labels as necessary.
  • I have added fuzzing tests or opened an issue to track them.
  • My PR contains breaking changes.
  • My PR changes performance-critical code, so I will run (micro) benchmarks and present the results.
  • My PR contains critical fixes that are necessary to be merged into the latest release.

Documentation

  • My PR needs documentation updates.
Release note
  • Introduce iceberg engine connection variable iceberg_engine_connection. To use iceberg engine table, users must create an iceberg connection first and set the variable iceberg_engine_connection first. Iceberg engine table will use the connection provided to access the iceberg catalog and warehouse as how iceberg sink and iceberg source work.

Copy link

gru-agent bot commented Jan 24, 2025

This pull request has been modified. If you want me to regenerate unit test for any of the files related, please find the file in "Files Changed" tab and add a comment @gru-agent. (The github "Comment on this file" feature is in the upper right corner of each file in "Files Changed" tab.)

@chenzl25 chenzl25 requested a review from wenym1 January 26, 2025 09:51
@chenzl25 chenzl25 requested a review from xxchan February 8, 2025 02:47
@chenzl25
Copy link
Contributor Author

chenzl25 commented Feb 8, 2025

Now, the iceberg engine allows users to use the iceberg engine connection to provide catalog and storage information.

@chenzl25 chenzl25 added the user-facing-changes Contains changes that are visible to users label Feb 10, 2025
Copy link
Contributor

Hi, there.

📝 Telemetry Reminder:
If you're implementing this feature, please consider adding telemetry metrics to track its usage. This helps us understand how the feature is being used and improve it further.
You can find the function report_event of telemetry reporting in the following files. Feel free to ask questions if you need any guidance!

  • src/frontend/src/telemetry.rs
  • src/meta/src/telemetry.rs
  • src/stream/src/telemetry.rs
  • src/storage/compactor/src/telemetry.rs
    Or calling report_event_common (src/common/telemetry_event/src/lib.rs) as if finding it hard to implement.
    ✨ Thank you for your contribution to RisingWave! ✨

This is an automated comment created by the peaceiris/actions-label-commenter. Responding to the bot or mentioning it won't have any effect.

@chenzl25 chenzl25 requested a review from fuyufjh February 10, 2025 12:51
@chenzl25 chenzl25 enabled auto-merge February 10, 2025 14:55
@chenzl25 chenzl25 added this pull request to the merge queue Feb 10, 2025
Merged via the queue into main with commit 367636b Feb 10, 2025
29 of 30 checks passed
@chenzl25 chenzl25 deleted the dylan/support_iceberg_engine_connection branch February 10, 2025 15:31
@chenzl25 chenzl25 mentioned this pull request Feb 11, 2025
17 tasks
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.

3 participants