This is an automated email from the ASF dual-hosted git repository.
okumin pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/hive-site.git
The following commit(s) were added to refs/heads/main by this push:
new 8a4187d HIVE-28059: Document Iceberg REST Catalog API of Hive 4.2.0
(#76)
8a4187d is described below
commit 8a4187d2f6fa1211f16694768d38a615c6b1751b
Author: Shohei Okumiya <[email protected]>
AuthorDate: Mon Nov 24 12:46:50 2025 +0900
HIVE-28059: Document Iceberg REST Catalog API of Hive 4.2.0 (#76)
---
content/docs/latest/admin/iceberg-rest-catalog.md | 90 +++++++++++++++++++++
.../admin/images/hive-iceberg-rest-integration.png | Bin 0 -> 30770 bytes
content/docs/latest/admin/oauth2/_index.md | 4 -
3 files changed, 90 insertions(+), 4 deletions(-)
diff --git a/content/docs/latest/admin/iceberg-rest-catalog.md
b/content/docs/latest/admin/iceberg-rest-catalog.md
new file mode 100644
index 0000000..8769dd3
--- /dev/null
+++ b/content/docs/latest/admin/iceberg-rest-catalog.md
@@ -0,0 +1,90 @@
+---
+title: "Apache Hive : Iceberg REST Catalog API backed by Hive Metastore"
+date: 2025-11-14
+---
+
+# Apache Hive : Iceberg REST Catalog API backed by Hive Metastore
+
+{{< toc >}}
+
+## Introduction
+
+
+
+Hive Metastore offers [Iceberg REST
API](https://iceberg.apache.org/rest-catalog-spec/) endpoints for clients
native to Apache Iceberg. Consequently, Iceberg users can access Iceberg tables
via either Hive Metastore Thrift API (using HiveCatalog) or Iceberg REST
Catalog API.
+
+## Basic configurations
+
+You must configure the following parameters.
+
+| Key | Required? | Default | Value |
+|-|-|-|-|
+| metastore.catalog.servlet.port | Yes | -1 | The port number to which Iceberg
REST API listens |
+
+## Authentication
+
+Hive Metastore's Iceberg REST API supports four authentication methods.
+
+### OAuth 2
+
+OAuth 2 is the industry standard for authenticating Iceberg client usernames.
You can integrate Hive Metastore with your Authorization Server, e.g.,
Keycloak, to protect Iceberg resources. See [Apache Hive : Setting Up OAuth
2]({{< relref "oauth2/_index.md" >}}) for further details.
+
+### JWT
+
+You can configure Hive Metastore so that its Iceberg REST API accepts a JSON
Web Token (JWT) as a bearer token in the Authorization header. This is the
default authentication mechanism because the default value of
`metastore.catalog.servlet.auth` is `jwt`. The JSON Web Key Set (JWKS)
locations must be configured using the `metastore.authentication.jwt.jwks.url`
property. Hive Metastore derives the username from the `sub` claim of a
properly-signed JWT.
+
+### Simple
+
+When `metastore.catalog.servlet.auth=simple`, Hive Metastore assumes that the
value of the `x-actor-username` HTTP header is the authenticated username. You
may use it to test authorized access, but this mode is not recommend in a
production environment.
+
+### None
+
+When `metastore.catalog.servlet.auth=none`, Hive Metastore does not enforce
any authentication. This mode may be used for testing only.
+
+## Authorization
+
+You can apply database-level or table-level authorization in Hive Metastore.
See also: [Apache Hive : LanguageManual Authorization]({{< relref
"../language/languagemanual-authorization.md" >}}).
+
+For example, you can secure Iceberg REST API using Apache Ranger.
+
+```xml
+<property>
+ <name>hive.security.authorization.manager</name>
+
<value>org.apache.ranger.authorization.hive.authorizer.RangerHiveAuthorizerFactory</value>
+</property>
+<property>
+ <name>metastore.pre.event.listeners</name>
+
<value>org.apache.hadoop.hive.ql.security.authorization.plugin.metastore.HiveMetaStoreAuthorizer</value>
+</property>
+```
+
+## Example: Minimal Setup with Docker
+
+The official Docker images expose the REST API endpoints on the 9001 port with
`metastore.catalog.servlet.auth=none`. A single command lets you try Iceberg
REST Catalog.
+
+```sh
+$ docker run --rm -p 9001:9001 apache/hive:standalone-metastore-{Hive version}
+```
+
+```sh
+$ curl http://localhost:9001/iceberg/v1/config
+{"defaults":{},"overrides":{},"endpoints":["GET v1/config","GET
/v1/{prefix}/namespaces","POST /v1/{prefix}/namespaces","HEAD
/v1/{prefix}/namespaces/{namespace}","GET
/v1/{prefix}/namespaces/{namespace}","DELETE
/v1/{prefix}/namespaces/{namespace}","POST
/v1/{prefix}/namespaces/{namespace}/properties","GET
/v1/{prefix}/namespaces/{namespace}/tables","POST
/v1/{prefix}/namespaces/{namespace}/tables","HEAD
/v1/{prefix}/namespaces/{namespace}/tables/{table}","GET
/v1/{prefix}/namespaces/{n [...]
+
+$ curl -X POST \
+ http://localhost:9001/iceberg/v1/namespaces/default/tables \
+ -H "Content-Type: application/json" \
+ -d '{
+ "name": "test",
+ "schema": {
+ "type": "struct",
+ "fields": [
+ {"id": 1, "name": "id", "type": "long", "required": true}
+ ]
+ },
+ "write-disposition": "create"
+ }'
+{"metadata-location":"file:/opt/hive/data/warehouse/test/metadata/00000-f1a3fec1-f0b6-499b-b635-d6a408458390.metadata.json","metadata":{"format-version":2,"table-uuid":"47ca342c-b65b-4e51-a09d-1b470f20298a","location":"file:/opt/hive/data/warehouse/test","last-sequence-number":0,"last-updated-ms":1763188388952,"last-column-id":1,"current-schema-id":0,"schemas":[{"type":"struct","schema-id":0,"fields":[{"id":1,"name":"id","required":true,"type":"long"}]}],"default-spec-id":0,"partition-sp
[...]
+
+$ curl http://localhost:9001/iceberg/v1/namespaces/default/tables/test
+{"metadata-location":"file:/opt/hive/data/warehouse/test/metadata/00000-f1a3fec1-f0b6-499b-b635-d6a408458390.metadata.json","metadata":{"format-version":2,"table-uuid":"47ca342c-b65b-4e51-a09d-1b470f20298a","location":"file:/opt/hive/data/warehouse/test","last-sequence-number":0,"last-updated-ms":1763188388952,"last-column-id":1,"current-schema-id":0,"schemas":[{"type":"struct","schema-id":0,"fields":[{"id":1,"name":"id","required":true,"type":"long"}]}],"default-spec-id":0,"partition-sp
[...]
+```
diff --git a/content/docs/latest/admin/images/hive-iceberg-rest-integration.png
b/content/docs/latest/admin/images/hive-iceberg-rest-integration.png
new file mode 100644
index 0000000..315e75f
Binary files /dev/null and
b/content/docs/latest/admin/images/hive-iceberg-rest-integration.png differ
diff --git a/content/docs/latest/admin/oauth2/_index.md
b/content/docs/latest/admin/oauth2/_index.md
index 0e70bf0..773b5c1 100644
--- a/content/docs/latest/admin/oauth2/_index.md
+++ b/content/docs/latest/admin/oauth2/_index.md
@@ -7,10 +7,6 @@ date: 2025-09-30
Hive is able to protect some resources and extract authenticated usernames
with OAuth 2.
-## WARNING
-
-This feature has not been deployed yet, is available only on the master branch.
-
## Supported Features
- Iceberg REST Catalog API