This is an automated email from the ASF dual-hosted git repository.
difin pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/hive.git
The following commit(s) were added to refs/heads/master by this push:
new 6730aadd189 HIVE-29750: Iceberg: Move Iceberg REST catalog client code
to a new m… (#6620)
6730aadd189 is described below
commit 6730aadd1895690b653f3c2260ce5328b61af1ae
Author: Dmitriy Fingerman <[email protected]>
AuthorDate: Fri Jul 24 16:13:15 2026 -0400
HIVE-29750: Iceberg: Move Iceberg REST catalog client code to a new m…
(#6620)
* HIVE-29750: Iceberg: Move Iceberg REST catalog client code to a new module
---------
Co-authored-by: Dmitriy Fingerman <[email protected]>
Co-authored-by: Dmitriy Fingerman <[email protected]>
---
.../iceberg/hive/IcebergCatalogProperties.java | 15 ----
iceberg/iceberg-handler/pom.xml | 13 ++++
.../mr/hive/IcebergVendedCredentialUtil.java | 5 +-
.../positive/iceberg_rest_catalog_gravitino.q | 2 +-
.../queries/positive/iceberg_rest_catalog_hms.q | 2 +-
iceberg/iceberg-rest-catalog-client/pom.xml | 87 ++++++++++++++++++++++
.../rest/catalog}/RestAccessDelegationMode.java | 7 +-
.../rest/catalog/RestCatalogAccessDelegation.java | 50 +++++++++++++
.../catalog}/client/HiveRESTCatalogClient.java | 2 +-
.../catalog}/TestRestAccessDelegationMode.java | 7 +-
.../catalog}/client/TestHiveRESTCatalogClient.java | 2 +-
iceberg/pom.xml | 6 ++
itests/hive-iceberg/pom.xml | 2 +-
.../hive/TestHiveRESTCatalogClientITBase.java | 2 +-
...bergRESTCatalogGravitinoLlapLocalCliDriver.java | 7 +-
...estIcebergRESTCatalogHMSLlapLocalCliDriver.java | 2 +-
.../src/docker/thirdparties/gravitino/README.md | 2 +-
.../thirdparties/gravitino/hive/hive-site.xml | 2 +-
.../src/docker/thirdparties/polaris/README.md | 2 +-
.../docker/thirdparties/polaris/hive/hive-site.xml | 2 +-
packaging/src/main/assembly/src.xml | 1 +
21 files changed, 181 insertions(+), 39 deletions(-)
diff --git
a/iceberg/iceberg-catalog/src/main/java/org/apache/iceberg/hive/IcebergCatalogProperties.java
b/iceberg/iceberg-catalog/src/main/java/org/apache/iceberg/hive/IcebergCatalogProperties.java
index 6d7f047c05d..424f8e10c35 100644
---
a/iceberg/iceberg-catalog/src/main/java/org/apache/iceberg/hive/IcebergCatalogProperties.java
+++
b/iceberg/iceberg-catalog/src/main/java/org/apache/iceberg/hive/IcebergCatalogProperties.java
@@ -27,7 +27,6 @@
import org.apache.hadoop.hive.metastore.conf.MetastoreConf;
import org.apache.iceberg.CatalogProperties;
import org.apache.iceberg.CatalogUtil;
-import org.apache.iceberg.hive.client.RestAccessDelegationMode;
import org.apache.iceberg.relocated.com.google.common.collect.Maps;
public class IcebergCatalogProperties {
@@ -39,7 +38,6 @@ public class IcebergCatalogProperties {
public static final String ICEBERG_HADOOP_TABLE_NAME =
"location_based_table";
public static final String ICEBERG_DEFAULT_CATALOG_NAME = "default_iceberg";
public static final String NO_CATALOG_TYPE = "no catalog";
- public static final String REST_ACCESS_DELEGATION_HEADER_PROPERTY =
"header.X-Iceberg-Access-Delegation";
private IcebergCatalogProperties() {
@@ -106,19 +104,6 @@ public static String catalogPropertyConfigKey(String
catalogName, String catalog
return String.format("%s%s.%s", CATALOG_CONFIG_PREFIX, catalogName,
catalogProperty);
}
- /**
- * Returns true when the catalog is configured to request REST vended
storage credentials via
- * {@link #REST_ACCESS_DELEGATION_HEADER_PROPERTY}.
- */
- public static boolean requestsVendedCredentials(String catalogName,
Configuration conf) {
- if (conf == null || StringUtils.isEmpty(catalogName)) {
- return false;
- }
- String headerValue =
- conf.get(catalogPropertyConfigKey(catalogName,
REST_ACCESS_DELEGATION_HEADER_PROPERTY));
- return
RestAccessDelegationMode.headerRequestsVendedCredentials(headerValue);
- }
-
/**
* Return the catalog type based on the catalog name.
* <p>
diff --git a/iceberg/iceberg-handler/pom.xml b/iceberg/iceberg-handler/pom.xml
index f00415ecbe2..bb8ba4cf105 100644
--- a/iceberg/iceberg-handler/pom.xml
+++ b/iceberg/iceberg-handler/pom.xml
@@ -34,6 +34,11 @@
<artifactId>hive-iceberg-catalog</artifactId>
<optional>true</optional>
</dependency>
+ <dependency>
+ <groupId>org.apache.hive</groupId>
+ <artifactId>hive-iceberg-rest-catalog-client</artifactId>
+ <optional>true</optional>
+ </dependency>
<dependency>
<!-- compile-time only, for S3FileIOProperties/AwsClientProperties
string constants
(inlined by javac); the classes are not referenced at runtime -->
@@ -181,6 +186,14 @@
<overWrite>true</overWrite>
<outputDirectory>${project.build.directory}/classes</outputDirectory>
</artifactItem>
+ <artifactItem>
+ <groupId>org.apache.hive</groupId>
+ <artifactId>hive-iceberg-rest-catalog-client</artifactId>
+ <version>${project.version}</version>
+ <type>jar</type>
+ <overWrite>true</overWrite>
+
<outputDirectory>${project.build.directory}/classes</outputDirectory>
+ </artifactItem>
</artifactItems>
</configuration>
</execution>
diff --git
a/iceberg/iceberg-handler/src/main/java/org/apache/iceberg/mr/hive/IcebergVendedCredentialUtil.java
b/iceberg/iceberg-handler/src/main/java/org/apache/iceberg/mr/hive/IcebergVendedCredentialUtil.java
index 8d110f40f70..95bfd2f9623 100644
---
a/iceberg/iceberg-handler/src/main/java/org/apache/iceberg/mr/hive/IcebergVendedCredentialUtil.java
+++
b/iceberg/iceberg-handler/src/main/java/org/apache/iceberg/mr/hive/IcebergVendedCredentialUtil.java
@@ -42,6 +42,7 @@
import org.apache.iceberg.aws.s3.S3FileIOProperties;
import org.apache.iceberg.exceptions.NoSuchTableException;
import org.apache.iceberg.hive.IcebergCatalogProperties;
+import org.apache.iceberg.hive.rest.catalog.RestCatalogAccessDelegation;
import org.apache.iceberg.io.FileIO;
import org.apache.iceberg.io.StorageCredential;
import org.apache.iceberg.io.SupportsStorageCredentials;
@@ -214,7 +215,7 @@ public static void applyFromJobConf(Table table, String
catalogName, Configurati
*/
private static boolean shouldSkipApplyFromJobConf(String tableName, String
catalogName, Configuration conf) {
return
StringUtils.isBlank(conf.get(InputFormatConfig.vendedCredentialsKey(tableName)))
&&
- !IcebergCatalogProperties.requestsVendedCredentials(catalogName, conf);
+ !RestCatalogAccessDelegation.requestsVendedCredentials(catalogName,
conf);
}
/**
@@ -247,7 +248,7 @@ static boolean requestsVendedCredentials(Properties
properties, Configuration co
if (properties == null) {
return false;
}
- return IcebergCatalogProperties.requestsVendedCredentials(
+ return RestCatalogAccessDelegation.requestsVendedCredentials(
properties.getProperty(InputFormatConfig.CATALOG_NAME), configuration);
}
diff --git
a/iceberg/iceberg-handler/src/test/queries/positive/iceberg_rest_catalog_gravitino.q
b/iceberg/iceberg-handler/src/test/queries/positive/iceberg_rest_catalog_gravitino.q
index 66d11bbd870..0f20a0b5e08 100644
---
a/iceberg/iceberg-handler/src/test/queries/positive/iceberg_rest_catalog_gravitino.q
+++
b/iceberg/iceberg-handler/src/test/queries/positive/iceberg_rest_catalog_gravitino.q
@@ -25,7 +25,7 @@
--!
qt:replace:/(\S\"iceberg-version\\\":\\\")(\w+\s\w+\s\d+\.\d+\.\d+\s\(\w+\s\w+\))(\\\")/$1#Masked#$3/
set hive.stats.autogather=false;
-set metastore.client.impl=org.apache.iceberg.hive.client.HiveRESTCatalogClient;
+set
metastore.client.impl=org.apache.iceberg.hive.rest.catalog.client.HiveRESTCatalogClient;
set metastore.catalog.default=ice01;
set iceberg.catalog.ice01.type=rest;
set
iceberg.catalog.ice01.header.X-Iceberg-Access-Delegation=vended-credentials;
diff --git
a/iceberg/iceberg-handler/src/test/queries/positive/iceberg_rest_catalog_hms.q
b/iceberg/iceberg-handler/src/test/queries/positive/iceberg_rest_catalog_hms.q
index a1d8cb6b905..a09141faf44 100644
---
a/iceberg/iceberg-handler/src/test/queries/positive/iceberg_rest_catalog_hms.q
+++
b/iceberg/iceberg-handler/src/test/queries/positive/iceberg_rest_catalog_hms.q
@@ -21,7 +21,7 @@
--!
qt:replace:/(\S\"iceberg-version\\\":\\\")(\w+\s\w+\s\d+\.\d+\.\d+\s\(\w+\s\w+\))(\\\")/$1#Masked#$3/
set hive.stats.autogather=false;
-set metastore.client.impl=org.apache.iceberg.hive.client.HiveRESTCatalogClient;
+set
metastore.client.impl=org.apache.iceberg.hive.rest.catalog.client.HiveRESTCatalogClient;
set metastore.catalog.default=ice01;
set iceberg.catalog.ice01.type=rest;
diff --git a/iceberg/iceberg-rest-catalog-client/pom.xml
b/iceberg/iceberg-rest-catalog-client/pom.xml
new file mode 100644
index 00000000000..a72898f4429
--- /dev/null
+++ b/iceberg/iceberg-rest-catalog-client/pom.xml
@@ -0,0 +1,87 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed 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.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <parent>
+ <groupId>org.apache.hive</groupId>
+ <artifactId>hive-iceberg</artifactId>
+ <version>4.3.0-SNAPSHOT</version>
+ <relativePath>../pom.xml</relativePath>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+ <artifactId>hive-iceberg-rest-catalog-client</artifactId>
+ <packaging>jar</packaging>
+ <name>Hive Iceberg REST Catalog Client</name>
+ <properties>
+ <hive.path.to.root>../..</hive.path.to.root>
+ <path.to.iceberg.root>..</path.to.iceberg.root>
+ </properties>
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.hive</groupId>
+ <artifactId>hive-iceberg-shading</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.hive</groupId>
+ <artifactId>hive-iceberg-catalog</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.hive</groupId>
+ <artifactId>hive-standalone-metastore-client</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.hadoop</groupId>
+ <artifactId>hadoop-client</artifactId>
+ </dependency>
+ <!-- test dependencies -->
+ <dependency>
+ <groupId>org.assertj</groupId>
+ <artifactId>assertj-core</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.junit.jupiter</groupId>
+ <artifactId>junit-jupiter-engine</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.junit.jupiter</groupId>
+ <artifactId>junit-jupiter-params</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.junit.vintage</groupId>
+ <artifactId>junit-vintage-engine</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.hive</groupId>
+ <artifactId>hive-iceberg-catalog</artifactId>
+ <classifier>tests</classifier>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.iceberg</groupId>
+ <artifactId>iceberg-core</artifactId>
+ <classifier>tests</classifier>
+ <scope>test</scope>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.iceberg</groupId>
+ <artifactId>iceberg-api</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ </dependencies>
+</project>
diff --git
a/iceberg/iceberg-catalog/src/main/java/org/apache/iceberg/hive/client/RestAccessDelegationMode.java
b/iceberg/iceberg-rest-catalog-client/src/main/java/org/apache/iceberg/hive/rest/catalog/RestAccessDelegationMode.java
similarity index 90%
rename from
iceberg/iceberg-catalog/src/main/java/org/apache/iceberg/hive/client/RestAccessDelegationMode.java
rename to
iceberg/iceberg-rest-catalog-client/src/main/java/org/apache/iceberg/hive/rest/catalog/RestAccessDelegationMode.java
index dd2d435a9b0..d26608d7396 100644
---
a/iceberg/iceberg-catalog/src/main/java/org/apache/iceberg/hive/client/RestAccessDelegationMode.java
+++
b/iceberg/iceberg-rest-catalog-client/src/main/java/org/apache/iceberg/hive/rest/catalog/RestAccessDelegationMode.java
@@ -17,17 +17,16 @@
* under the License.
*/
-package org.apache.iceberg.hive.client;
+package org.apache.iceberg.hive.rest.catalog;
import java.util.Arrays;
import java.util.stream.Collectors;
import org.apache.commons.lang3.StringUtils;
-import org.apache.iceberg.hive.IcebergCatalogProperties;
/**
* Values for the Iceberg REST catalog {@code X-Iceberg-Access-Delegation}
request header. The header
* accepts a comma-separated list of these modes; configure via
- * {@link IcebergCatalogProperties#REST_ACCESS_DELEGATION_HEADER_PROPERTY}.
+ * {@link RestCatalogAccessDelegation#ACCESS_DELEGATION_PROPERTY}.
*
* @see <a
href="https://github.com/apache/iceberg/blob/main/open-api/rest-catalog-open-api.yaml">REST
catalog spec</a>
*/
@@ -46,7 +45,7 @@ public String modeName() {
return modeName;
}
- /** Comma-separated list suitable for {@link
IcebergCatalogProperties#REST_ACCESS_DELEGATION_HEADER_PROPERTY}. */
+ /** Comma-separated list suitable for {@link
RestCatalogAccessDelegation#ACCESS_DELEGATION_PROPERTY}. */
public static String toHeaderValue(RestAccessDelegationMode... modes) {
return
Arrays.stream(modes).map(RestAccessDelegationMode::modeName).collect(Collectors.joining(","));
}
diff --git
a/iceberg/iceberg-rest-catalog-client/src/main/java/org/apache/iceberg/hive/rest/catalog/RestCatalogAccessDelegation.java
b/iceberg/iceberg-rest-catalog-client/src/main/java/org/apache/iceberg/hive/rest/catalog/RestCatalogAccessDelegation.java
new file mode 100644
index 00000000000..f0916994695
--- /dev/null
+++
b/iceberg/iceberg-rest-catalog-client/src/main/java/org/apache/iceberg/hive/rest/catalog/RestCatalogAccessDelegation.java
@@ -0,0 +1,50 @@
+/*
+ * 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.
+ */
+
+package org.apache.iceberg.hive.rest.catalog;
+
+import org.apache.commons.lang3.StringUtils;
+import org.apache.hadoop.conf.Configuration;
+import org.apache.iceberg.hive.IcebergCatalogProperties;
+
+/**
+ * Utilities for Iceberg REST catalog access delegation, including the {@code
X-Iceberg-Access-Delegation}
+ * catalog property and vended-credential configuration.
+ */
+public final class RestCatalogAccessDelegation {
+
+ /** Iceberg REST catalog property prefix for {@code
X-Iceberg-Access-Delegation}. */
+ public static final String ACCESS_DELEGATION_PROPERTY =
"header.X-Iceberg-Access-Delegation";
+
+ private RestCatalogAccessDelegation() {
+ }
+
+ /**
+ * Returns true when the catalog is configured to request REST vended
storage credentials via
+ * {@link #ACCESS_DELEGATION_PROPERTY}.
+ */
+ public static boolean requestsVendedCredentials(String catalogName,
Configuration conf) {
+ if (conf == null || StringUtils.isEmpty(catalogName)) {
+ return false;
+ }
+ String headerValue =
+
conf.get(IcebergCatalogProperties.catalogPropertyConfigKey(catalogName,
ACCESS_DELEGATION_PROPERTY));
+ return
RestAccessDelegationMode.headerRequestsVendedCredentials(headerValue);
+ }
+}
diff --git
a/iceberg/iceberg-catalog/src/main/java/org/apache/iceberg/hive/client/HiveRESTCatalogClient.java
b/iceberg/iceberg-rest-catalog-client/src/main/java/org/apache/iceberg/hive/rest/catalog/client/HiveRESTCatalogClient.java
similarity index 99%
rename from
iceberg/iceberg-catalog/src/main/java/org/apache/iceberg/hive/client/HiveRESTCatalogClient.java
rename to
iceberg/iceberg-rest-catalog-client/src/main/java/org/apache/iceberg/hive/rest/catalog/client/HiveRESTCatalogClient.java
index 30f9e7dcb46..68f84b585c2 100644
---
a/iceberg/iceberg-catalog/src/main/java/org/apache/iceberg/hive/client/HiveRESTCatalogClient.java
+++
b/iceberg/iceberg-rest-catalog-client/src/main/java/org/apache/iceberg/hive/rest/catalog/client/HiveRESTCatalogClient.java
@@ -17,7 +17,7 @@
* under the License.
*/
-package org.apache.iceberg.hive.client;
+package org.apache.iceberg.hive.rest.catalog.client;
import java.io.IOException;
import java.util.Collections;
diff --git
a/iceberg/iceberg-catalog/src/test/java/org/apache/iceberg/hive/client/TestRestAccessDelegationMode.java
b/iceberg/iceberg-rest-catalog-client/src/test/java/org/apache/iceberg/hive/rest/catalog/TestRestAccessDelegationMode.java
similarity index 90%
rename from
iceberg/iceberg-catalog/src/test/java/org/apache/iceberg/hive/client/TestRestAccessDelegationMode.java
rename to
iceberg/iceberg-rest-catalog-client/src/test/java/org/apache/iceberg/hive/rest/catalog/TestRestAccessDelegationMode.java
index dce5106b5cf..1c3e7c0fb87 100644
---
a/iceberg/iceberg-catalog/src/test/java/org/apache/iceberg/hive/client/TestRestAccessDelegationMode.java
+++
b/iceberg/iceberg-rest-catalog-client/src/test/java/org/apache/iceberg/hive/rest/catalog/TestRestAccessDelegationMode.java
@@ -17,9 +17,8 @@
* under the License.
*/
-package org.apache.iceberg.hive.client;
+package org.apache.iceberg.hive.rest.catalog;
-import org.apache.iceberg.hive.IcebergCatalogProperties;
import org.junit.jupiter.api.Test;
import static org.assertj.core.api.Assertions.assertThat;
@@ -65,11 +64,11 @@ void headerRequestsVendedCredentials() {
@Test
void requestsVendedCredentialsFromConfiguration() {
org.apache.hadoop.conf.Configuration conf = new
org.apache.hadoop.conf.Configuration();
- assertThat(IcebergCatalogProperties.requestsVendedCredentials("ice01",
conf)).isFalse();
+ assertThat(RestCatalogAccessDelegation.requestsVendedCredentials("ice01",
conf)).isFalse();
conf.set(
"iceberg.catalog.ice01.header.X-Iceberg-Access-Delegation",
RestAccessDelegationMode.VENDED_CREDENTIALS.modeName());
- assertThat(IcebergCatalogProperties.requestsVendedCredentials("ice01",
conf)).isTrue();
+ assertThat(RestCatalogAccessDelegation.requestsVendedCredentials("ice01",
conf)).isTrue();
}
}
diff --git
a/iceberg/iceberg-catalog/src/test/java/org/apache/iceberg/hive/client/TestHiveRESTCatalogClient.java
b/iceberg/iceberg-rest-catalog-client/src/test/java/org/apache/iceberg/hive/rest/catalog/client/TestHiveRESTCatalogClient.java
similarity index 99%
rename from
iceberg/iceberg-catalog/src/test/java/org/apache/iceberg/hive/client/TestHiveRESTCatalogClient.java
rename to
iceberg/iceberg-rest-catalog-client/src/test/java/org/apache/iceberg/hive/rest/catalog/client/TestHiveRESTCatalogClient.java
index 4f21f46b2e2..653aed54815 100644
---
a/iceberg/iceberg-catalog/src/test/java/org/apache/iceberg/hive/client/TestHiveRESTCatalogClient.java
+++
b/iceberg/iceberg-rest-catalog-client/src/test/java/org/apache/iceberg/hive/rest/catalog/client/TestHiveRESTCatalogClient.java
@@ -17,7 +17,7 @@
* under the License.
*/
-package org.apache.iceberg.hive.client;
+package org.apache.iceberg.hive.rest.catalog.client;
import java.util.Arrays;
import java.util.Collections;
diff --git a/iceberg/pom.xml b/iceberg/pom.xml
index 02001e15901..a41eddaf719 100644
--- a/iceberg/pom.xml
+++ b/iceberg/pom.xml
@@ -41,6 +41,7 @@
<module>patched-iceberg-core</module>
<module>iceberg-shading</module>
<module>iceberg-catalog</module>
+ <module>iceberg-rest-catalog-client</module>
<module>iceberg-handler</module>
</modules>
<dependencies>
@@ -98,6 +99,11 @@
<artifactId>hive-iceberg-catalog</artifactId>
<version>${project.version}</version>
</dependency>
+ <dependency>
+ <groupId>org.apache.hive</groupId>
+ <artifactId>hive-iceberg-rest-catalog-client</artifactId>
+ <version>${project.version}</version>
+ </dependency>
<dependency>
<groupId>org.apache.hive</groupId>
<artifactId>hive-iceberg-shading</artifactId>
diff --git a/itests/hive-iceberg/pom.xml b/itests/hive-iceberg/pom.xml
index fca0b1e4d8f..2766a1cdf5b 100644
--- a/itests/hive-iceberg/pom.xml
+++ b/itests/hive-iceberg/pom.xml
@@ -64,7 +64,7 @@
</dependency>
<dependency>
<groupId>org.apache.hive</groupId>
- <artifactId>hive-iceberg-catalog</artifactId>
+ <artifactId>hive-iceberg-rest-catalog-client</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
diff --git
a/itests/hive-iceberg/src/test/java/org/apache/hive/TestHiveRESTCatalogClientITBase.java
b/itests/hive-iceberg/src/test/java/org/apache/hive/TestHiveRESTCatalogClientITBase.java
index 03885a54e1c..69e0df80e24 100644
---
a/itests/hive-iceberg/src/test/java/org/apache/hive/TestHiveRESTCatalogClientITBase.java
+++
b/itests/hive-iceberg/src/test/java/org/apache/hive/TestHiveRESTCatalogClientITBase.java
@@ -92,7 +92,7 @@ public void setupConf() {
conf = restCatalogExtension.getConf();
MetastoreConf.setVar(conf, MetastoreConf.ConfVars.METASTORE_CLIENT_IMPL,
- "org.apache.iceberg.hive.client.HiveRESTCatalogClient");
+ "org.apache.iceberg.hive.rest.catalog.client.HiveRESTCatalogClient");
conf.set(MetastoreConf.ConfVars.CATALOG_DEFAULT.getVarname(),
CATALOG_NAME);
conf.set(REST_CATALOG_PREFIX + "uri",
restCatalogExtension.getRestEndpoint());
conf.set(REST_CATALOG_PREFIX + "type",
CatalogUtil.ICEBERG_CATALOG_TYPE_REST);
diff --git
a/itests/qtest-iceberg/src/test/java/org/apache/hadoop/hive/cli/TestIcebergRESTCatalogGravitinoLlapLocalCliDriver.java
b/itests/qtest-iceberg/src/test/java/org/apache/hadoop/hive/cli/TestIcebergRESTCatalogGravitinoLlapLocalCliDriver.java
index 4c04578e244..7aaa59475f1 100644
---
a/itests/qtest-iceberg/src/test/java/org/apache/hadoop/hive/cli/TestIcebergRESTCatalogGravitinoLlapLocalCliDriver.java
+++
b/itests/qtest-iceberg/src/test/java/org/apache/hadoop/hive/cli/TestIcebergRESTCatalogGravitinoLlapLocalCliDriver.java
@@ -28,8 +28,9 @@
import org.apache.iceberg.aws.AwsClientProperties;
import org.apache.iceberg.aws.s3.S3FileIOProperties;
import org.apache.iceberg.hive.IcebergCatalogProperties;
-import org.apache.iceberg.hive.client.RestAccessDelegationMode;
-import org.apache.iceberg.hive.client.HiveRESTCatalogClient;
+import org.apache.iceberg.hive.rest.catalog.RestAccessDelegationMode;
+import org.apache.iceberg.hive.rest.catalog.RestCatalogAccessDelegation;
+import org.apache.iceberg.hive.rest.catalog.client.HiveRESTCatalogClient;
import org.apache.iceberg.rest.extension.OAuth2AuthorizationServer;
import org.junit.After;
import org.junit.Before;
@@ -149,7 +150,7 @@ public void setup() throws Exception {
conf.set(restCatalogPrefix + "oauth2-server-uri",
oAuth2AuthorizationServer.getTokenEndpoint());
conf.set(restCatalogPrefix + "credential",
oAuth2AuthorizationServer.getClientCredential());
conf.set(
- restCatalogPrefix +
IcebergCatalogProperties.REST_ACCESS_DELEGATION_HEADER_PROPERTY,
+ restCatalogPrefix +
RestCatalogAccessDelegation.ACCESS_DELEGATION_PROPERTY,
RestAccessDelegationMode.VENDED_CREDENTIALS.modeName());
applyHostS3FilesystemSettings(conf);
diff --git
a/itests/qtest-iceberg/src/test/java/org/apache/hadoop/hive/cli/TestIcebergRESTCatalogHMSLlapLocalCliDriver.java
b/itests/qtest-iceberg/src/test/java/org/apache/hadoop/hive/cli/TestIcebergRESTCatalogHMSLlapLocalCliDriver.java
index 429661e390f..8589624921d 100644
---
a/itests/qtest-iceberg/src/test/java/org/apache/hadoop/hive/cli/TestIcebergRESTCatalogHMSLlapLocalCliDriver.java
+++
b/itests/qtest-iceberg/src/test/java/org/apache/hadoop/hive/cli/TestIcebergRESTCatalogHMSLlapLocalCliDriver.java
@@ -80,7 +80,7 @@ public void setupHiveConfig() {
Configuration conf = SessionState.get().getConf();
MetastoreConf.setVar(conf, MetastoreConf.ConfVars.METASTORE_CLIENT_IMPL,
- "org.apache.iceberg.hive.client.HiveRESTCatalogClient");
+ "org.apache.iceberg.hive.rest.catalog.client.HiveRESTCatalogClient");
MetastoreConf.setVar(conf, MetastoreConf.ConfVars.CATALOG_DEFAULT,
CATALOG_NAME);
conf.set(restCatalogPrefix + "uri",
REST_CATALOG_EXTENSION.getRestEndpoint());
conf.set(restCatalogPrefix + "type",
CatalogUtil.ICEBERG_CATALOG_TYPE_REST);
diff --git a/packaging/src/docker/thirdparties/gravitino/README.md
b/packaging/src/docker/thirdparties/gravitino/README.md
index d97c5725eeb..bf4013a598c 100644
--- a/packaging/src/docker/thirdparties/gravitino/README.md
+++ b/packaging/src/docker/thirdparties/gravitino/README.md
@@ -193,7 +193,7 @@ docker-compose down -v
<property>
<name>metastore.client.impl</name>
- <value>org.apache.iceberg.hive.client.HiveRESTCatalogClient</value>
+
<value>org.apache.iceberg.hive.rest.catalog.client.HiveRESTCatalogClient</value>
<description>Specifies the client implementation to use for accessing
Iceberg via REST.</description>
</property>
diff --git a/packaging/src/docker/thirdparties/gravitino/hive/hive-site.xml
b/packaging/src/docker/thirdparties/gravitino/hive/hive-site.xml
index 59e07cbe643..1130fa1fd78 100644
--- a/packaging/src/docker/thirdparties/gravitino/hive/hive-site.xml
+++ b/packaging/src/docker/thirdparties/gravitino/hive/hive-site.xml
@@ -90,7 +90,7 @@
<property>
<name>metastore.client.impl</name>
- <value>org.apache.iceberg.hive.client.HiveRESTCatalogClient</value>
+
<value>org.apache.iceberg.hive.rest.catalog.client.HiveRESTCatalogClient</value>
</property>
<property>
diff --git a/packaging/src/docker/thirdparties/polaris/README.md
b/packaging/src/docker/thirdparties/polaris/README.md
index f3305ac1990..642b7faa6d8 100644
--- a/packaging/src/docker/thirdparties/polaris/README.md
+++ b/packaging/src/docker/thirdparties/polaris/README.md
@@ -124,7 +124,7 @@ docker-compose down -v
<property>
<name>metastore.client.impl</name>
- <value>org.apache.iceberg.hive.client.HiveRESTCatalogClient</value>
+
<value>org.apache.iceberg.hive.rest.catalog.client.HiveRESTCatalogClient</value>
<description>Specifies the client implementation to use for accessing
Iceberg via REST.</description>
</property>
diff --git a/packaging/src/docker/thirdparties/polaris/hive/hive-site.xml
b/packaging/src/docker/thirdparties/polaris/hive/hive-site.xml
index df952937757..8b8e28b603a 100644
--- a/packaging/src/docker/thirdparties/polaris/hive/hive-site.xml
+++ b/packaging/src/docker/thirdparties/polaris/hive/hive-site.xml
@@ -90,7 +90,7 @@
<property>
<name>metastore.client.impl</name>
- <value>org.apache.iceberg.hive.client.HiveRESTCatalogClient</value>
+
<value>org.apache.iceberg.hive.rest.catalog.client.HiveRESTCatalogClient</value>
</property>
<property>
diff --git a/packaging/src/main/assembly/src.xml
b/packaging/src/main/assembly/src.xml
index 4dc658e1871..06bb00afdf0 100644
--- a/packaging/src/main/assembly/src.xml
+++ b/packaging/src/main/assembly/src.xml
@@ -119,6 +119,7 @@
<include>parser/**/*</include>
<include>udf/**/*</include>
<include>iceberg/iceberg-catalog/**/*</include>
+ <include>iceberg/iceberg-rest-catalog-client/**/*</include>
<include>iceberg/iceberg-handler/**/*</include>
<include>iceberg/iceberg-shading/**/*</include>
<include>iceberg/patched-iceberg-api/**/*</include>