This is an automated email from the ASF dual-hosted git repository. stigahuang pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/impala.git
commit ac5e1fa4986d3a024a2ab5f2ebb382f7efb0cd69 Author: Peter Rozsa <[email protected]> AuthorDate: Fri Jan 23 14:23:31 2026 +0100 IMPALA-14693: Document Iceberg REST Catalog support This change adds a new docs page about Iceberg REST Catalog support that presents configuration options, deployment modes, and example usecases. Change-Id: I1a125bfcd5c4058f6cbcd81b8d56c0571a06981d Generated-by: Github Copilot (Claude Sonnet 4.5) Reviewed-on: http://gerrit.cloudera.org:8080/23897 Reviewed-by: Impala Public Jenkins <[email protected]> Tested-by: Impala Public Jenkins <[email protected]> --- docs/impala.ditamap | 1 + docs/topics/impala_iceberg.xml | 27 +++ docs/topics/impala_iceberg_rest_catalog.xml | 279 ++++++++++++++++++++++++++++ 3 files changed, 307 insertions(+) diff --git a/docs/impala.ditamap b/docs/impala.ditamap index 88854d59a..a5e229b85 100644 --- a/docs/impala.ditamap +++ b/docs/impala.ditamap @@ -350,6 +350,7 @@ under the License. <topicref href="topics/impala_kudu.xml"/> <topicref href="topics/impala_hbase.xml"/> <topicref rev="4.1.0" href="topics/impala_iceberg.xml"/> + <topicref rev="5.0.0" href="topics/impala_iceberg_rest_catalog.xml"/> <topicref rev="5.0.0" href="topics/impala_paimon.xml"/> <topicref href="topics/impala_s3.xml"/> <topicref rev="2.9.0" href="topics/impala_adls.xml"/> diff --git a/docs/topics/impala_iceberg.xml b/docs/topics/impala_iceberg.xml index 70e6b446d..cac82b10d 100644 --- a/docs/topics/impala_iceberg.xml +++ b/docs/topics/impala_iceberg.xml @@ -1213,4 +1213,31 @@ iceberg.io.manifest.cache.max-content-length=8388608; </p> </conbody> </concept> + + <concept id="iceberg_rest_catalog"> + <title>Using Impala with Iceberg REST Catalog</title> + <titlealts audience="PDF"><navtitle>REST Catalog</navtitle></titlealts> + <prolog> + <metadata> + <data name="Category" value="Concepts"/> + <data name="Category" value="Iceberg"/> + <data name="Category" value="REST Catalog"/> + </metadata> + </prolog> + + <conbody> + <p> + <indexterm audience="hidden">Iceberg REST Catalog</indexterm> + Impala supports connecting directly to Iceberg REST Catalog servers. + For complete documentation on using Impala with Iceberg REST Catalog, including configuration, + deployment modes, see + <xref href="impala_iceberg_rest_catalog.xml"/>. + </p> + + <p> + For more information on the Apache Iceberg REST Catalog specification, see + <xref href="https://iceberg.apache.org/rest-catalog-spec/" scope="external" format="html">Iceberg REST Catalog</xref>. + </p> + </conbody> + </concept> </concept> diff --git a/docs/topics/impala_iceberg_rest_catalog.xml b/docs/topics/impala_iceberg_rest_catalog.xml new file mode 100644 index 000000000..69786bb91 --- /dev/null +++ b/docs/topics/impala_iceberg_rest_catalog.xml @@ -0,0 +1,279 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- +Licensed to the Apache Software Foundation (ASF) under one +or more contributor license agreements. See the NOTICE file +distributed with this work for additional information +regarding copyright ownership. The ASF licenses this file +to you under the Apache License, Version 2.0 (the +"License"); you may not use this file except in compliance +with the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, +software distributed under the License is distributed on an +"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +KIND, either express or implied. See the License for the +specific language governing permissions and limitations +under the License. +--> +<!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"> +<concept id="impala_iceberg_rest_catalog"> + <title>Using Impala with Iceberg REST Catalog</title> + <titlealts audience="PDF"><navtitle>Iceberg REST Catalog</navtitle></titlealts> + <prolog> + <metadata> + <data name="Category" value="Concepts"/> + <data name="Category" value="Iceberg"/> + <data name="Category" value="REST Catalog"/> + </metadata> + </prolog> + + <conbody> + <p> + <indexterm audience="hidden">Iceberg REST Catalog</indexterm> + Impala supports Apache Iceberg REST Catalog, which enables + Impala to connect directly to Iceberg REST Catalog servers. This feature allows you to: + </p> + <ul> + <li>Run Impala without Hive Metastore (HMS) or catalogd dependency</li> + <li>Connect to multiple REST catalog endpoints simultaneously</li> + <li>Use hybrid deployments with both HMS and REST catalogs</li> + <li>Integrate with open-source REST catalog implementations</li> + </ul> + + <p> + For more information on the Apache Iceberg REST Catalog specification, see + <xref href="https://iceberg.apache.org/rest-catalog-spec/" scope="external" format="html">Iceberg REST Catalog</xref>. + </p> + + <p outputclass="toc inpage"/> + </conbody> + + <concept id="rest_catalog_overview"> + <title>REST Catalog Overview</title> + <prolog> + <metadata> + <data name="Category" value="Concepts"/> + </metadata> + </prolog> + <conbody> + <p> + The Iceberg REST Catalog is a standardized HTTP API for managing Iceberg table metadata. + Unlike traditional Hive Metastore (HMS) deployments, REST Catalog provides a lightweight, + cloud-native approach to catalog management that works seamlessly across different compute engines. + </p> + </conbody> + </concept> + + <concept id="rest_catalog_configuration"> + <title>Configuration</title> + <prolog> + <metadata> + <data name="Category" value="Concepts"/> + </metadata> + </prolog> + <conbody> + <p> + REST Catalog configuration in Impala uses Java properties files that specify connection + details and authentication settings. Configuration files must be placed in a directory + specified by the <codeph>--catalog_config_dir</codeph> flag. + </p> + + <section id="config_file_format"> + <title>Configuration File Format</title> + <p> + Configuration files use the standard Java Properties format, with key=value pairs. Each file + represents a separate REST Catalog. + </p> + </section> + + <section id="required_properties"> + <title>Required Properties</title> + <p> + The following properties are required in every REST Catalog configuration file: + </p> + <ul> + <li> + <codeph>connector.name</codeph>: Must be set to <codeph>iceberg</codeph> + </li> + <li> + <codeph>iceberg.catalog.type</codeph>: Must be set to <codeph>rest</codeph> + </li> + <li> + <codeph>uri</codeph> or <codeph>iceberg.rest-catalog.uri</codeph>: REST Catalog endpoint URL + </li> + </ul> + <p> + <b>Example:</b> + </p> + <codeblock>connector.name=iceberg +iceberg.catalog.type=rest +uri=http://rest-catalog-server:9084</codeblock> + </section> + + <section id="optional_properties"> + <title>Optional Properties</title> + <p> + <b>Warehouse Location:</b> + </p> + <codeblock>warehouse=hdfs://namenode:8020/warehouse/iceberg +# Or: +iceberg.rest-catalog.warehouse=hdfs://namenode:8020/warehouse/iceberg</codeblock> + <p> + <b>Catalog Prefix:</b> + </p> + <codeblock>prefix=my_catalog +# Or: +iceberg.rest-catalog.prefix=my_catalog</codeblock> + <p> + <b>OAuth Configuration:</b> + </p> + <codeblock>iceberg.rest-catalog.security=OAUTH2 +iceberg.rest-catalog.oauth2.credential=client_secret +iceberg.rest-catalog.oauth2.server-uri=http://localhost:7070/realms/lakekeeper-realm/protocol/openid-connect/token</codeblock> + </section> + + <section id="environment_variable_substitution"> + <title>Environment Variable Substitution</title> + <p> + Impala supports environment variable substitution in .properties files to securely + manage credentials and environment-specific settings. This feature is particularly + useful for storing secrets outside of configuration files. + </p> + <p> + <b>Syntax:</b> <codeph>${ENV:VARIABLE_NAME}</codeph> + </p> + <p> + <b>Example:</b> + </p> + <codeblock>iceberg.rest-catalog.oauth2.credential=${ENV:OAUTH_CLIENT_SECRET} +connection-password=${ENV:DB_PASSWORD}</codeblock> + <p> + <b>Requirements:</b> + </p> + <ul> + <li>Variable names must match the pattern: <codeph>[a-zA-Z][a-zA-Z0-9_-]*</codeph></li> + <li>Environment variables must be set before starting Impala</li> + <li>Undefined variables will cause Impala startup to fail</li> + </ul> + </section> + </conbody> + </concept> + + <concept id="rest_catalog_deployment_modes"> + <title>Deployment Modes</title> + <prolog> + <metadata> + <data name="Category" value="Concepts"/> + </metadata> + </prolog> + <conbody> + <p> + Impala supports three deployment modes for REST Catalog, each suited to different use cases and architectural requirements. + </p> + + <section id="standalone_rest_catalog"> + <title>Mode 1: Standalone REST Catalog (No HMS/Catalogd)</title> + <p> + This mode runs Impala without HMS or catalogd, connecting directly to one or more REST Catalog servers. + It provides the simplest architecture for pure Iceberg deployments. + </p> + <p> + <b>Example Use Case:</b> New deployments that only need Iceberg tables and want minimal operational complexity. + </p> + <p> + <b>Configuration:</b> + </p> + <p> + <i>Impalad Flags:</i> + </p> + <codeblock>--use_local_catalog=true +--catalogd_deployed=false +--catalog_config_dir=/path/to/config/directory</codeblock> + <p> + <i>Configuration File</i> (<codeph>/path/to/config/directory/rest.properties</codeph>): + </p> + <codeblock>connector.name=iceberg +iceberg.catalog.type=rest +iceberg.rest-catalog.uri=http://rest-catalog-server:9084</codeblock> + </section> + + <section id="multi_catalog_mode"> + <title>Mode 2: Multi-Catalog (REST Catalog(s) + HMS)</title> + <p> + This hybrid mode connects to both REST Catalogs and HMS simultaneously, allowing access + to both Iceberg tables in the REST Catalog and traditional HMS tables. + </p> + <p> + <b>Example Use Case:</b> Migration scenarios or environments that need both new Iceberg tables and legacy HMS tables. + </p> + <p> + <b>Configuration:</b> + </p> + <p> + <i>Impalad Flags:</i> + </p> + <codeblock>--use_local_catalog=true +--catalog_config_dir=/path/to/config/directory</codeblock> + <p> + <i>Catalogd Flags:</i> + </p> + <codeblock>--catalog_topic_mode=minimal</codeblock> + <p> + <i>Configuration File</i> (<codeph>/path/to/config/directory/rest.properties</codeph>): + </p> + <codeblock>connector.name=iceberg +iceberg.catalog.type=rest +iceberg.rest-catalog.uri=http://rest-catalog-server:9084</codeblock> + <p> + <b>Handling Ambiguous Table Names:</b> + </p> + <p> + If a table with the same name exists in multiple catalogs, queries will fail with an + ambiguity error. The error message will indicate which catalogs contain the table. + </p> + </section> + </conbody> + </concept> + + <concept id="unsupported_features"> + <title>Limitations and Unsupported Features</title> + <prolog> + <metadata> + <data name="Category" value="Concepts"/> + </metadata> + </prolog> + <conbody> + <section id="limitations"> + <p> + The following Iceberg REST Catalog features are not currently supported: + </p> + <ul> + <li> + <b>Vended Credentials:</b> The <codeph>vended-credentials-enabled</codeph> property + must be set to <codeph>false</codeph>. Impala does not support delegated credential + management from the REST Catalog server. + </li> + <li> + <b>User Sessions:</b> Only <codeph>NONE</codeph> session type is supported. Per-user + session isolation is not available. + </li> + <li> + <b>Nested Namespaces:</b> The <codeph>nested-namespace-enabled</codeph> property must + be set to <codeph>false</codeph>. Only flat namespace hierarchies are supported. + </li> + <li> + <b>Write Operations:</b> Write operations (INSERT, UPDATE, DELETE, MERGE) are not supported. + </li> + <li> + <b>DDL Operations:</b> DDL operations (CREATE, ALTER, DROP,...) are not supported. + </li> + <li> + <b>Views:</b> Iceberg views are not supported through the REST Catalog. + </li> + </ul> + </section> + </conbody> + </concept> +</concept>
