Skip to content

Commit 2f7a519

Browse files
committed
Add iceberg_default_catalog_namespace to Cloud
1 parent b216ec2 commit 2f7a519

6 files changed

Lines changed: 17 additions & 24 deletions

modules/manage/pages/iceberg/about-iceberg-topics.adoc

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,8 @@ To create an Iceberg table for a Redpanda topic, you must set the cluster config
7878
endif::[]
7979

8080
. Set the `iceberg_enabled` configuration option on your cluster to `true`.
81+
+
82+
When multiple clusters write to the same catalog, each cluster must use a distinct namespace to avoid table name collisions. This is especially critical for REST catalog providers that offer a single global catalog per account (such as AWS Glue), where there is no other isolation mechanism. By default, Redpanda creates Iceberg tables in a namespace called `redpanda`. To use a unique namespace for your cluster's REST catalog integration, also set config_ref:iceberg_default_catalog_namespace,true,properties/cluster-properties[`iceberg_default_catalog_namespace`] when you set `iceberg_enabled`. This property cannot be changed after you enable Iceberg topics on the cluster.
8183
ifdef::env-cloud[]
8284
+
8385
[tabs]
@@ -90,6 +92,8 @@ rpk::
9092
rpk cloud login
9193
rpk profile create --from-cloud <cluster-id>
9294
rpk cluster config set iceberg_enabled true
95+
# Optional: set a custom namespace (default is "redpanda")
96+
# rpk cluster config set iceberg_default_catalog_namespace '["<custom-namespace>"]'
9397
----
9498
--
9599
@@ -114,6 +118,9 @@ curl -H "Authorization: Bearer ${RP_CLOUD_TOKEN}" -X PATCH \
114118
-H 'accept: application/json'\
115119
-H 'content-type: application/json' \
116120
-d '{"cluster_configuration":{"custom_properties": {"iceberg_enabled":true}}}'
121+
# Optional: set a custom namespace (default is "redpanda")
122+
# Add "iceberg_default_catalog_namespace":["<custom-namespace>"] key-value pair
123+
# to custom_properties
117124
----
118125
119126
The link:/api/doc/cloud-controlplane/operation/operation-clusterservice_updatecluster[`PATCH /clusters/{cluster.id}`] request returns the ID of a long-running operation. The operation may take up to ten minutes to complete. You can check the status of the operation by polling the link:/api/doc/cloud-controlplane/operation/operation-operationservice_getoperation[`GET /operations/\{id}`] endpoint.
@@ -122,8 +129,6 @@ The link:/api/doc/cloud-controlplane/operation/operation-clusterservice_updatecl
122129
endif::[]
123130
ifndef::env-cloud[]
124131
+
125-
When multiple clusters write to the same catalog, each cluster must use a distinct namespace to avoid table name collisions. This is especially critical for REST catalog providers that offer a single global catalog per account (such as AWS Glue), where there is no other isolation mechanism. By default, Redpanda creates Iceberg tables in a namespace called `redpanda`. To use a unique namespace for your cluster's REST catalog integration, also set config_ref:iceberg_default_catalog_namespace,true,properties/cluster-properties[`iceberg_default_catalog_namespace`] when you set `iceberg_enabled`. This property cannot be changed after you enable Iceberg topics on the cluster.
126-
+
127132
[,bash]
128133
----
129134
rpk cluster config set iceberg_enabled true

modules/manage/pages/iceberg/iceberg-topics-aws-glue.adoc

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -150,9 +150,9 @@ endif::[]
150150
To configure your Redpanda cluster to enable Iceberg on a topic and integrate with the AWS Glue Data Catalog:
151151

152152
. Edit your cluster configuration to set the `iceberg_enabled` property to `true`, and set the catalog integration properties listed in the example below.
153-
ifndef::env-cloud[]
154153
+
155154
By default, Redpanda creates Iceberg tables in a namespace called `redpanda`. Because AWS Glue provides a single catalog per account, each Redpanda cluster that writes to the same Glue catalog must use a distinct namespace to avoid table name collisions. To set a unique namespace, also set config_ref:iceberg_default_catalog_namespace,true,properties/cluster-properties[`iceberg_default_catalog_namespace`] when you set `iceberg_enabled`. This property cannot be changed after Iceberg is enabled.
155+
ifndef::env-cloud[]
156156
+
157157
Run `rpk cluster config edit` to update these properties:
158158
+
@@ -169,12 +169,12 @@ iceberg_rest_catalog_authentication_mode: aws_sigv4
169169
# Because Redpanda does not support the use of distinct buckets for Iceberg,
170170
# always place iceberg_rest_catalog_base_location in the same S3 bucket as cloud_storage_bucket
171171
iceberg_rest_catalog_base_location: s3://<bucket-name>/<warehouse-path>
172-
# Use the iceberg_rest_catalog_aws_* properties if you want to
173-
# use separate AWS credentials for the catalog, or omit these lines to reuse S3
172+
# Use the iceberg_rest_catalog_aws_* properties if you want to
173+
# use separate AWS credentials for the catalog, or omit these lines to reuse S3
174174
# (cloud_storage_*) credentials.
175175
# For access using access keys only, use iceberg_rest_catalog_aws_access_key
176-
# and iceberg_rest_catalog_aws_secret_key. For access with an IAM role, use
177-
# iceberg_rest_catalog_credentials_source only.
176+
# and iceberg_rest_catalog_aws_secret_key. For access with an IAM role, use
177+
# iceberg_rest_catalog_credentials_source only.
178178
# iceberg_rest_catalog_aws_region:
179179
# iceberg_rest_catalog_aws_access_key:
180180
# iceberg_rest_catalog_aws_secret_key:
@@ -193,6 +193,7 @@ As a security best practice, do not use the bucket root for the base location. A
193193
--
194194
endif::[]
195195
ifdef::env-cloud[]
196+
+
196197
Use `rpk` as shown in the following examples, or xref:manage:cluster-maintenance/config-cluster.adoc#set-cluster-configuration-properties[use the Cloud API] to update these cluster properties. The update might take several minutes to complete.
197198
+
198199
[tabs]
@@ -211,6 +212,7 @@ rpk profile create --from-cloud <cluster-id>
211212
rpk cluster config set \
212213
iceberg_enabled=true \
213214
iceberg_delete=false \
215+
iceberg_default_catalog_namespace='["<custom-namespace>"]' \
214216
iceberg_catalog_type=rest \
215217
iceberg_rest_catalog_endpoint=https://glue.<glue-region>.amazonaws.com/iceberg \
216218
iceberg_rest_catalog_authentication_mode=aws_sigv4 \
@@ -230,6 +232,7 @@ Use static credentials (override IAM)::
230232
rpk cluster config set \
231233
iceberg_enabled=true \
232234
iceberg_delete=false \
235+
iceberg_default_catalog_namespace='["<custom-namespace>"]' \
233236
iceberg_catalog_type=rest \
234237
iceberg_rest_catalog_endpoint=https://glue.<glue-region>.amazonaws.com/iceberg \
235238
iceberg_rest_catalog_authentication_mode=aws_sigv4 \
@@ -245,9 +248,10 @@ rpk cluster config set \
245248
Use your own values for the following placeholders:
246249
+
247250
--
251+
* `<custom-namespace>`: A unique namespace for this cluster's Iceberg tables. Each Redpanda cluster that writes to the same Glue catalog must use a distinct namespace to avoid table name collisions. If omitted, the default namespace `redpanda` is used.
248252
* `<glue-region>`: The AWS region where your Data Catalog is located. The region in the AWS Glue endpoint must match the region specified in your config_ref:iceberg_rest_catalog_aws_region,true,properties/cluster-properties[`iceberg_rest_catalog_aws_region`] property.
249253
* `<cluster-storage-bucket-name>` and `<warehouse-path>`: AWS Glue requires you to specify the base location where Redpanda stores Iceberg data and metadata files. You must use an S3 URI; for example, `s3://<cluster-storage-bucket-name>/iceberg`.
250-
** Bucket name: For BYOC clusters, the bucket name is `redpanda-cloud-storage-<cluster-id>`. For BYOVPC clusters, use the name of the object storage bucket you created as a xref:get-started:cluster-types/byoc/aws/vpc-byo-aws.adoc#configure-the-redpanda-network-and-cluster[customer-managed resource].
254+
** Bucket name: For BYOC clusters, the bucket name is `redpanda-cloud-storage-<cluster-id>`. For BYOVPC clusters, use the name of the object storage bucket you created as a xref:get-started:cluster-types/byoc/aws/vpc-byo-aws.adoc#configure-the-redpanda-network-and-cluster[customer-managed resource].
251255
+
252256
This must be the same bucket used for your cluster's object storage. You cannot specify a different bucket for Iceberg data.
253257
** Warehouse: This is a name you choose as the logical name (such as `iceberg`) for the warehouse represented by all Redpanda Iceberg topic data in the cluster.

modules/manage/pages/iceberg/iceberg-topics-databricks-unity.adoc

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -191,12 +191,7 @@ echo "hello world\nfoo bar\nbaz qux" | rpk topic produce <topic-name> --format='
191191

192192
You should see the topic as a table with data in Unity Catalog. The data may take some time to become visible, depending on your config_ref:iceberg_target_lag_ms,true,properties/cluster-properties[`iceberg_target_lag_ms`] setting.
193193

194-
ifndef::env-cloud[]
195194
. In Catalog Explorer, open your catalog. You should see a `redpanda` schema (or the namespace you configured with config_ref:iceberg_default_catalog_namespace,true,properties/cluster-properties[`iceberg_default_catalog_namespace`]), in addition to `default` and `information_schema`.
196-
endif::[]
197-
ifdef::env-cloud[]
198-
. In Catalog Explorer, open your catalog. You should see a `redpanda` schema, in addition to `default` and `information_schema`.
199-
endif::[]
200195
. The schema and the table residing within it are automatically added for you. The table name is the same as the topic name.
201196

202197
== Query Iceberg table using Databricks SQL

modules/manage/pages/iceberg/query-iceberg-topics.adoc

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -80,9 +80,7 @@ endif::[]
8080
{"user_id": 2324, "event_type": "BUTTON_CLICK", "ts": "2024-11-25T20:23:59.380Z"}
8181
----
8282

83-
ifndef::env-cloud[]
8483
NOTE: The query examples on this page use `redpanda` as the Iceberg namespace, which is the default. If you configured a different namespace using config_ref:iceberg_default_catalog_namespace,true,properties/cluster-properties[`iceberg_default_catalog_namespace`], replace `redpanda` with your configured namespace.
85-
endif::[]
8684

8785
=== Topic with schema (`value_schema_id_prefix` mode)
8886

modules/manage/pages/iceberg/redpanda-topics-iceberg-snowflake-catalog.adoc

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -169,12 +169,7 @@ echo "hello world\nfoo bar\nbaz qux" | rpk topic produce <topic-name> --format='
169169
You should see the topic as a table in Open Catalog.
170170

171171
. In Open Catalog, select *Catalogs*, then open your catalog.
172-
ifndef::env-cloud[]
173172
. Under your catalog, you should see the `redpanda` namespace (or the namespace you configured with config_ref:iceberg_default_catalog_namespace,true,properties/cluster-properties[`iceberg_default_catalog_namespace`]), and a table with the name of your topic. The namespace and the table are automatically added for you.
174-
endif::[]
175-
ifdef::env-cloud[]
176-
. Under your catalog, you should see the `redpanda` namespace and a table with the name of your topic. The namespace and the table are automatically added for you.
177-
endif::[]
178173

179174
== Query Iceberg table in Snowflake
180175

modules/manage/pages/iceberg/use-iceberg-catalogs.adoc

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -92,13 +92,11 @@ To connect to a REST catalog, set the following cluster configuration properties
9292

9393
NOTE: You must set `iceberg_rest_catalog_endpoint` at the same time that you set `iceberg_catalog_type` to `rest`.
9494

95-
ifndef::env-cloud[]
9695
==== Configure table namespace
9796

9897
Check if your REST catalog provider has specific requirements or recommendations for namespaces. For example, AWS Glue offers only a single global catalog per account, and each cluster that writes to the same Glue catalog must use a distinct namespace to avoid table name collisions.
9998

10099
By default, Redpanda creates Iceberg tables in a namespace called `redpanda`. To use a unique namespace, configure the config_ref:iceberg_default_catalog_namespace,true,properties/cluster-properties[`iceberg_default_catalog_namespace`] cluster property. You must set this property before enabling the Iceberg integration or at the same time. After you have enabled Iceberg, do not change this property value.
101-
endif::[]
102100

103101
==== Configure authentication
104102

@@ -283,9 +281,7 @@ SELECT * FROM streaming.redpanda.<table-name>;
283281
----
284282

285283
The Iceberg table name is the name of your Redpanda topic.
286-
ifndef::env-cloud[]
287284
If you configured a different namespace using config_ref:iceberg_default_catalog_namespace,true,properties/cluster-properties[`iceberg_default_catalog_namespace`], replace `redpanda` with your configured namespace.
288-
endif::[]
289285

290286
TIP: You may need to explicitly create a table for the Iceberg data in your query engine. For an example, see xref:manage:iceberg/redpanda-topics-iceberg-snowflake-catalog.adoc[].
291287

0 commit comments

Comments
 (0)