You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kyuubi.apache.org by dn...@apache.org on 2026/09/23 22:26:56 UTC
(kyuubi) branch branch-1.12 updated: [KYUUBI #7434][DOC] Reformat connector docs from RST to Markdown
This is an automated email from the ASF dual-hosted git repository.
dnskr pushed a commit to branch branch-1.12
in repository https://gitbox.apache.org/repos/asf/kyuubi.git
The following commit(s) were added to refs/heads/branch-1.12 by this push:
new c437fb46f7 [KYUUBI #7434][DOC] Reformat connector docs from RST to Markdown
c437fb46f7 is described below
commit c437fb46f70fbbb25a422ab4d0b83c16b1c6125d
Author: Denis Krivenko <dn...@gmail.com>
AuthorDate: Thu Sep 24 00:20:22 2026 +0200
[KYUUBI #7434][DOC] Reformat connector docs from RST to Markdown
The changes are needed to unify the format used for documentation, as described in the issue https://github.com/apache/kyuubi/issues/7434.
The PR **does not** change page contents (only very minimal adjustments) to ensure an easier review of the migration.
The pages contain out-of-date information and broken links, requiring a comprehensive review and updates in a separate PRs.
Tested by building the documentation and comparing the pages against the live site.
Assisted-by: Qwen Coder
Closes #7744 from dnskr/rst-to-md-connector-pages.
Closes #7434
930326650 [Denis Krivenko] [DOC] Fix substitution on TPC-H Spark connector page
d7586c267 [Denis Krivenko] [DOC] Reformat connector docs from RST to Markdown
Authored-by: Denis Krivenko <dn...@gmail.com>
Signed-off-by: Denis Krivenko <dn...@gmail.com>
(cherry picked from commit 031890d34c173f5cc382626f6604b9a13087034c)
Signed-off-by: Denis Krivenko <dn...@gmail.com>
---
docs/connector/flink/hudi.md | 108 +++++++
docs/connector/flink/hudi.rst | 117 -------
docs/connector/flink/iceberg.md | 116 +++++++
docs/connector/flink/iceberg.rst | 121 -------
docs/connector/flink/index.md | 27 ++
docs/connector/flink/index.rst | 24 --
docs/connector/flink/paimon.md | 102 ++++++
docs/connector/flink/paimon.rst | 110 -------
docs/connector/hive/iceberg.md | 94 ++++++
docs/connector/hive/iceberg.rst | 103 ------
docs/connector/hive/index.md | 26 ++
docs/connector/hive/index.rst | 23 --
docs/connector/hive/paimon.md | 94 ++++++
docs/connector/hive/paimon.rst | 100 ------
docs/connector/index.md | 50 +++
docs/connector/index.rst | 42 ---
docs/connector/spark/delta_lake.md | 84 +++++
docs/connector/spark/delta_lake.rst | 95 ------
docs/connector/spark/delta_lake_with_azure_blob.md | 327 +++++++++++++++++++
.../connector/spark/delta_lake_with_azure_blob.rst | 349 ---------------------
docs/connector/spark/hudi.md | 98 ++++++
docs/connector/spark/hudi.rst | 110 -------
docs/connector/spark/iceberg.md | 115 +++++++
docs/connector/spark/iceberg.rst | 124 --------
docs/connector/spark/index.md | 46 +++
docs/connector/spark/index.rst | 43 ---
docs/connector/spark/kudu.md | 1 +
docs/connector/spark/paimon.md | 97 ++++++
docs/connector/spark/paimon.rst | 111 -------
docs/connector/spark/tidb.md | 95 ++++++
docs/connector/spark/tidb.rst | 103 ------
docs/connector/spark/tpcds.md | 98 ++++++
docs/connector/spark/tpcds.rst | 108 -------
docs/connector/spark/tpch.md | 95 ++++++
docs/connector/spark/tpch.rst | 104 ------
docs/connector/trino/hudi.md | 75 +++++
docs/connector/trino/hudi.rst | 80 -----
docs/connector/trino/iceberg.md | 87 +++++
docs/connector/trino/iceberg.rst | 92 ------
docs/connector/trino/index.md | 27 ++
docs/connector/trino/index.rst | 24 --
docs/connector/trino/paimon.md | 81 +++++
docs/connector/trino/paimon.rst | 92 ------
docs/quick_start/quick_start_with_data_agent.md | 2 +-
44 files changed, 1944 insertions(+), 2076 deletions(-)
diff --git a/docs/connector/flink/hudi.md b/docs/connector/flink/hudi.md
new file mode 100644
index 0000000000..e074458a2b
--- /dev/null
+++ b/docs/connector/flink/hudi.md
@@ -0,0 +1,108 @@
+<!--
+- 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.
+-->
+
+# Hudi
+
+[Apache Hudi](https://hudi.apache.org/) (pronounced "hoodie") is the next-generation streaming data lake platform.
+Apache Hudi brings core warehouse and database functionality directly to a data lake.
+
+```{tip}
+This article assumes that you have mastered the basic knowledge and operation of [Hudi](https://hudi.apache.org/).
+For the knowledge about Hudi not mentioned in this article, you can obtain it from its [Official Documentation](https://hudi.apache.org/docs/overview).
+```
+
+By using Kyuubi, we can run SQL queries towards Hudi which is more convenient, easy to understand,
+and easy to expand than directly using flink to manipulate Hudi.
+
+## Hudi Integration
+
+To enable the integration of kyuubi flink sql engine and Hudi through Catalog APIs, you need to:
+
+- Referencing the Hudi [dependencies](#dependencies)
+
+### Dependencies
+
+The **classpath** of kyuubi flink sql engine with Hudi supported consists of:
+
+1. kyuubi-flink-sql-engine-{{ release }}_2.12.jar, the engine jar deployed with a Kyuubi distribution
+2. A copy of Flink distribution
+3. `hudi-flink<flink.version>-bundle-<hudi.version>.jar` (example: `hudi-flink1.20-bundle-1.0.1.jar`), which can be found in the [Maven Central](https://mvnrepository.com/artifact/org.apache.hudi)
+
+In order to make the Hudi packages visible for the runtime classpath of engines, we can use one of these methods:
+
+1. Put the Hudi packages into `$flink_HOME/lib` directly
+2. Set `pipeline.jars=/path/to/hudi-flink-bundle`
+
+## Hudi Operations
+
+Taking `Create Table` as an example:
+
+```sql
+CREATE TABLE t1 (
+ id INT PRIMARY KEY NOT ENFORCED,
+ name STRING,
+ price DOUBLE
+) WITH (
+ 'connector' = 'hudi',
+ 'path' = 's3://bucket-name/hudi/',
+ 'table.type' = 'MERGE_ON_READ' -- this creates a MERGE_ON_READ table, by default is COPY_ON_WRITE
+);
+```
+
+Taking `Query Data` as an example:
+
+```sql
+SELECT * FROM t1;
+```
+
+Taking `Insert and Update Data` as an example:
+
+```sql
+INSERT INTO t1 VALUES (1, 'Lucas' , 2.71828);
+```
+
+Taking `Streaming Query` as an example:
+
+```sql
+CREATE TABLE t1 (
+ uuid VARCHAR(20) PRIMARY KEY NOT ENFORCED,
+ name VARCHAR(10),
+ age INT,
+ ts TIMESTAMP(3),
+ `partition` VARCHAR(20)
+)
+PARTITIONED BY (`partition`)
+WITH (
+ 'connector' = 'hudi',
+ 'path' = '${path}',
+ 'table.type' = 'MERGE_ON_READ',
+ 'read.streaming.enabled' = 'true', -- this option enable the streaming read
+ 'read.start-commit' = '20210316134557', -- specifies the start commit instant time
+ 'read.streaming.check-interval' = '4' -- specifies the check interval for finding new source commits, default 60s.
+);
+
+-- Then query the table in stream mode
+SELECT * FROM t1;
+```
+
+Taking `Delete Data`:
+
+The streaming query can implicitly auto delete data.
+When consuming data in streaming query,
+Hudi Flink source can also accepts the change logs from the underneath data source,
+it can then applies the UPDATE and DELETE by per-row level.
+
diff --git a/docs/connector/flink/hudi.rst b/docs/connector/flink/hudi.rst
deleted file mode 100644
index 4d766eb2ef..0000000000
--- a/docs/connector/flink/hudi.rst
+++ /dev/null
@@ -1,117 +0,0 @@
-.. 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.
-
-`Hudi`_
-========
-
-Apache Hudi (pronounced “hoodie”) is the next generation streaming data lake platform.
-Apache Hudi brings core warehouse and database functionality directly to a data lake.
-
-.. tip::
- This article assumes that you have mastered the basic knowledge and operation of `Hudi`_.
- For the knowledge about Hudi not mentioned in this article,
- you can obtain it from its `Official Documentation`_.
-
-By using Kyuubi, we can run SQL queries towards Hudi which is more convenient, easy to understand,
-and easy to expand than directly using flink to manipulate Hudi.
-
-Hudi Integration
-----------------
-
-To enable the integration of kyuubi flink sql engine and Hudi through
-Catalog APIs, you need to:
-
-- Referencing the Hudi :ref:`dependencies<flink-hudi-deps>`
-
-.. _flink-hudi-deps:
-
-Dependencies
-************
-
-The **classpath** of kyuubi flink sql engine with Hudi supported consists of
-
-1. kyuubi-flink-sql-engine-\ |release|\ _2.12.jar, the engine jar deployed with a Kyuubi distribution
-2. a copy of flink distribution
-3. hudi-flink<flink.version>-bundle-<hudi.version>.jar (example: hudi-flink1.18-bundle-1.0.1.jar), which can be found in the `Maven Central`_
-
-In order to make the Hudi packages visible for the runtime classpath of engines, we can use one of these methods:
-
-1. Put the Hudi packages into ``$flink_HOME/lib`` directly
-2. Set ``pipeline.jars=/path/to/hudi-flink-bundle``
-
-Hudi Operations
----------------
-
-Taking ``Create Table`` as a example,
-
-.. code-block:: sql
-
- CREATE TABLE t1 (
- id INT PRIMARY KEY NOT ENFORCED,
- name STRING,
- price DOUBLE
- ) WITH (
- 'connector' = 'hudi',
- 'path' = 's3://bucket-name/hudi/',
- 'table.type' = 'MERGE_ON_READ' -- this creates a MERGE_ON_READ table, by default is COPY_ON_WRITE
- );
-
-Taking ``Query Data`` as a example,
-
-.. code-block:: sql
-
- SELECT * FROM t1;
-
-Taking ``Insert and Update Data`` as a example,
-
-.. code-block:: sql
-
- INSERT INTO t1 VALUES (1, 'Lucas' , 2.71828);
-
-Taking ``Streaming Query`` as a example,
-
-.. code-block:: sql
-
- CREATE TABLE t1 (
- uuid VARCHAR(20) PRIMARY KEY NOT ENFORCED,
- name VARCHAR(10),
- age INT,
- ts TIMESTAMP(3),
- `partition` VARCHAR(20)
- )
- PARTITIONED BY (`partition`)
- WITH (
- 'connector' = 'hudi',
- 'path' = '${path}',
- 'table.type' = 'MERGE_ON_READ',
- 'read.streaming.enabled' = 'true', -- this option enable the streaming read
- 'read.start-commit' = '20210316134557', -- specifies the start commit instant time
- 'read.streaming.check-interval' = '4' -- specifies the check interval for finding new source commits, default 60s.
- );
-
- -- Then query the table in stream mode
- SELECT * FROM t1;
-
-Taking ``Delete Data``,
-
-The streaming query can implicitly auto delete data.
-When consuming data in streaming query,
-Hudi Flink source can also accepts the change logs from the underneath data source,
-it can then applies the UPDATE and DELETE by per-row level.
-
-
-.. _Hudi: https://hudi.apache.org/
-.. _Official Documentation: https://hudi.apache.org/docs/overview
-.. _Maven Central: https://mvnrepository.com/artifact/org.apache.hudi
diff --git a/docs/connector/flink/iceberg.md b/docs/connector/flink/iceberg.md
new file mode 100644
index 0000000000..fd9f70ae54
--- /dev/null
+++ b/docs/connector/flink/iceberg.md
@@ -0,0 +1,116 @@
+<!--
+- 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.
+-->
+
+# Iceberg
+
+[Apache Iceberg](https://iceberg.apache.org/) is an open table format for huge analytic datasets.
+Iceberg adds tables to compute engines including Spark, Trino, PrestoDB, Flink, Hive and Impala
+using a high-performance table format that works just like a SQL table.
+
+```{tip}
+This article assumes that you have mastered the basic knowledge and operation of [Iceberg](https://iceberg.apache.org/).
+For the knowledge about Iceberg not mentioned in this article,
+you can obtain it from its [Official Documentation](https://iceberg.apache.org/docs/latest/).
+```
+
+By using kyuubi, we can run SQL queries towards Iceberg which is more
+convenient, easy to understand, and easy to expand than directly using
+flink to manipulate Iceberg.
+
+## Iceberg Integration
+
+To enable the integration of kyuubi flink sql engine and Iceberg through
+Catalog APIs, you need to:
+
+- Referencing the Iceberg [dependencies](#dependencies)
+
+### Dependencies
+
+The **classpath** of kyuubi flink sql engine with Iceberg supported consists of:
+
+1. kyuubi-flink-sql-engine-{{ release }}_2.12.jar, the engine jar deployed with a Kyuubi distribution
+2. A copy of Flink distribution
+3. `iceberg-flink-runtime-<flink.version>-<iceberg.version>.jar` (example: `iceberg-flink-runtime-1.20-1.7.0.jar`), which can be found in the [Maven Central](https://mvnrepository.com/artifact/org.apache.iceberg)
+
+In order to make the Iceberg packages visible for the runtime classpath of engines, we can use one of these methods:
+
+1. Put the Iceberg packages into `$FLINK_HOME/lib` directly
+2. Set `pipeline.jars=/path/to/iceberg-flink-runtime`
+
+```{warning}
+Please mind the compatibility of different Iceberg and Flink versions, which
+can be confirmed on the page of [Iceberg multi engine support](https://iceberg.apache.org/multi-engine-support/).
+```
+
+## Iceberg Operations
+
+Taking `CREATE CATALOG` as an example:
+
+```sql
+CREATE CATALOG hive_catalog WITH (
+ 'type'='iceberg',
+ 'catalog-type'='hive',
+ 'uri'='thrift://localhost:9083',
+ 'warehouse'='hdfs://nn:8020/warehouse/path'
+);
+USE CATALOG hive_catalog;
+```
+
+Taking `CREATE DATABASE` as an example:
+
+```sql
+CREATE DATABASE iceberg_db;
+USE iceberg_db;
+```
+
+Taking `CREATE TABLE` as an example:
+
+```sql
+CREATE TABLE `hive_catalog`.`default`.`sample` (
+ id BIGINT COMMENT 'unique id',
+ data STRING
+);
+```
+
+Taking `Batch Read` as an example:
+
+```sql
+SET execution.runtime-mode = batch;
+SELECT * FROM sample;
+```
+
+Taking `Streaming Read` as an example:
+
+```sql
+SET execution.runtime-mode = streaming;
+SELECT * FROM sample /*+ OPTIONS('streaming'='true', 'monitor-interval'='1s')*/ ;
+```
+
+Taking `INSERT INTO` as an example:
+
+```sql
+INSERT INTO `hive_catalog`.`default`.`sample` VALUES (1, 'a');
+INSERT INTO `hive_catalog`.`default`.`sample` SELECT id, data from other_kafka_table;
+```
+
+Taking `INSERT OVERWRITE` as an example, Flink streaming job does not support INSERT OVERWRITE.
+
+```sql
+INSERT OVERWRITE `hive_catalog`.`default`.`sample` VALUES (1, 'a');
+INSERT OVERWRITE `hive_catalog`.`default`.`sample` PARTITION(data='a') SELECT 6;
+```
+
diff --git a/docs/connector/flink/iceberg.rst b/docs/connector/flink/iceberg.rst
deleted file mode 100644
index 7b956365e0..0000000000
--- a/docs/connector/flink/iceberg.rst
+++ /dev/null
@@ -1,121 +0,0 @@
-.. 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.
-
-`Iceberg`_
-==========
-
-Apache Iceberg is an open table format for huge analytic datasets.
-Iceberg adds tables to compute engines including Spark, Trino, PrestoDB, Flink, Hive and Impala
-using a high-performance table format that works just like a SQL table.
-
-.. tip::
- This article assumes that you have mastered the basic knowledge and operation of `Iceberg`_.
- For the knowledge about Iceberg not mentioned in this article,
- you can obtain it from its `Official Documentation`_.
-
-By using kyuubi, we can run SQL queries towards Iceberg which is more
-convenient, easy to understand, and easy to expand than directly using
-flink to manipulate Iceberg.
-
-Iceberg Integration
--------------------
-
-To enable the integration of kyuubi flink sql engine and Iceberg through Catalog APIs, you need to:
-
-- Referencing the Iceberg :ref:`dependencies<flink-iceberg-deps>`
-
-.. _flink-iceberg-deps:
-
-Dependencies
-************
-
-The **classpath** of kyuubi flink sql engine with Iceberg supported consists of
-
-1. kyuubi-flink-sql-engine-\ |release|\ _2.12.jar, the engine jar deployed with a Kyuubi distribution
-2. a copy of flink distribution
-3. iceberg-flink-runtime-<flink.version>-<iceberg.version>.jar (example: iceberg-flink-runtime-1.18-1.7.0.jar), which can be found in the `Maven Central`_
-
-In order to make the Iceberg packages visible for the runtime classpath of engines, we can use one of these methods:
-
-1. Put the Iceberg packages into ``$FLINK_HOME/lib`` directly
-2. Set ``pipeline.jars=/path/to/iceberg-flink-runtime``
-
-.. warning::
- Please mind the compatibility of different Iceberg and Flink versions, which can be confirmed on the page of `Iceberg multi engine support`_.
-
-Iceberg Operations
-------------------
-
-Taking ``CREATE CATALOG`` as a example,
-
-.. code-block:: sql
-
- CREATE CATALOG hive_catalog WITH (
- 'type'='iceberg',
- 'catalog-type'='hive',
- 'uri'='thrift://localhost:9083',
- 'warehouse'='hdfs://nn:8020/warehouse/path'
- );
- USE CATALOG hive_catalog;
-
-Taking ``CREATE DATABASE`` as a example,
-
-.. code-block:: sql
-
- CREATE DATABASE iceberg_db;
- USE iceberg_db;
-
-Taking ``CREATE TABLE`` as a example,
-
-.. code-block:: sql
-
- CREATE TABLE `hive_catalog`.`default`.`sample` (
- id BIGINT COMMENT 'unique id',
- data STRING
- );
-
-Taking ``Batch Read`` as a example,
-
-.. code-block:: sql
-
- SET execution.runtime-mode = batch;
- SELECT * FROM sample;
-
-Taking ``Streaming Read`` as a example,
-
-.. code-block:: sql
-
- SET execution.runtime-mode = streaming;
- SELECT * FROM sample /*+ OPTIONS('streaming'='true', 'monitor-interval'='1s')*/ ;
-
-Taking ``INSERT INTO`` as a example,
-
-.. code-block:: sql
-
- INSERT INTO `hive_catalog`.`default`.`sample` VALUES (1, 'a');
- INSERT INTO `hive_catalog`.`default`.`sample` SELECT id, data from other_kafka_table;
-
-Taking ``INSERT OVERWRITE`` as a example,
-Flink streaming job does not support INSERT OVERWRITE.
-
-.. code-block:: sql
-
- INSERT OVERWRITE `hive_catalog`.`default`.`sample` VALUES (1, 'a');
- INSERT OVERWRITE `hive_catalog`.`default`.`sample` PARTITION(data='a') SELECT 6;
-
-.. _Iceberg: https://iceberg.apache.org/
-.. _Official Documentation: https://iceberg.apache.org/docs/latest/
-.. _Maven Central: https://mvnrepository.com/artifact/org.apache.iceberg
-.. _Iceberg multi engine support: https://iceberg.apache.org/multi-engine-support/
diff --git a/docs/connector/flink/index.md b/docs/connector/flink/index.md
new file mode 100644
index 0000000000..699e67c070
--- /dev/null
+++ b/docs/connector/flink/index.md
@@ -0,0 +1,27 @@
+<!--
+- 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.
+-->
+
+# Connectors For Flink SQL Query Engine
+
+```{toctree}
+:maxdepth: 2
+
+paimon
+hudi
+iceberg
+```
+
diff --git a/docs/connector/flink/index.rst b/docs/connector/flink/index.rst
deleted file mode 100644
index e7d40fd43b..0000000000
--- a/docs/connector/flink/index.rst
+++ /dev/null
@@ -1,24 +0,0 @@
-.. 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.
-
-Connectors For Flink SQL Query Engine
-=====================================
-
-.. toctree::
- :maxdepth: 2
-
- paimon
- hudi
- iceberg
diff --git a/docs/connector/flink/paimon.md b/docs/connector/flink/paimon.md
new file mode 100644
index 0000000000..cbe22b5810
--- /dev/null
+++ b/docs/connector/flink/paimon.md
@@ -0,0 +1,102 @@
+<!--
+- 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.
+-->
+
+# Apache Paimon
+
+[Apache Paimon](https://paimon.apache.org/) is a streaming data lake platform that supports high-speed data ingestion, change data tracking, and efficient real-time analytics.
+
+```{tip}
+This article assumes that you have mastered the basic knowledge and operation of [Apache Paimon](https://paimon.apache.org/).
+For the knowledge not mentioned in this article, you can obtain it from its [Official Documentation](https://paimon.apache.org/docs/master/).
+```
+
+By using kyuubi, we can run SQL queries towards Apache Paimon which is more
+convenient, easy to understand, and easy to expand than directly using flink.
+
+## Apache Paimon Integration
+
+To enable the integration of kyuubi flink sql engine and Apache Paimon, you need to:
+
+- Referencing the Apache Paimon [dependencies](#dependencies)
+
+### Dependencies
+
+The **classpath** of kyuubi flink sql engine with Apache Paimon supported consists of:
+
+1. kyuubi-flink-sql-engine-{{ release }}_2.12.jar, the engine jar deployed with a Kyuubi distribution
+2. A copy of Flink distribution
+3. `paimon-flink-<version>.jar` (example: `paimon-flink-1.20-0.8.1.jar`), which can be found in the [Apache Paimon Supported Engines Flink](https://paimon.apache.org/docs/master/flink/installation#choose-an-artifact)
+4. `flink-shaded-hadoop-2-uber-<version>.jar`, which code can be found in the [Pre-bundled Hadoop Jar](https://flink.apache.org/downloads/#additional-components)
+
+In order to make the Apache Paimon packages visible for the runtime classpath of engines, you need to:
+
+1. Put the Apache Paimon packages into `$FLINK_HOME/lib` directly
+2. Setting the `HADOOP_CLASSPATH` environment variable or copy the [Pre-bundled Hadoop Jar](https://flink.apache.org/downloads/#additional-components) to `flink/lib`.
+
+```{warning}
+Please mind the compatibility of different Apache Paimon and Flink versions,
+which can be confirmed on the page of [Apache Paimon multi engine support](https://paimon.apache.org/docs/master/engines/overview/).
+```
+
+## Apache Paimon Operations
+
+Taking `CREATE CATALOG` as an example:
+
+```sql
+CREATE CATALOG my_catalog WITH (
+ 'type'='paimon',
+ 'warehouse'='file:/tmp/paimon'
+);
+
+USE CATALOG my_catalog;
+```
+
+Taking `CREATE TABLE` as an example:
+
+```sql
+CREATE TABLE MyTable (
+ user_id BIGINT,
+ item_id BIGINT,
+ behavior STRING,
+ dt STRING,
+ PRIMARY KEY (dt, user_id) NOT ENFORCED
+) PARTITIONED BY (dt) WITH (
+ 'bucket' = '4'
+);
+```
+
+Taking `Query Table` as an example:
+
+```sql
+SET 'execution.runtime-mode' = 'batch';
+SELECT * FROM orders WHERE catalog_id=1025;
+```
+
+Taking `Streaming Query` as an example:
+
+```sql
+SET 'execution.runtime-mode' = 'streaming';
+SELECT * FROM MyTable /*+ OPTIONS ('log.scan'='latest') */;
+```
+
+Taking `Rescale Bucket` as an example:
+
+```sql
+ALTER TABLE my_table SET ('bucket' = '4');
+INSERT OVERWRITE my_table PARTITION (dt = '2022-01-01');
+```
+
diff --git a/docs/connector/flink/paimon.rst b/docs/connector/flink/paimon.rst
deleted file mode 100644
index e960df0fce..0000000000
--- a/docs/connector/flink/paimon.rst
+++ /dev/null
@@ -1,110 +0,0 @@
-.. 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.
-
-Apache Paimon
-=============
-
-`Apache Paimon`_ is a streaming data lake platform that supports high-speed data ingestion, change data tracking, and efficient real-time analytics.
-
-.. tip::
- This article assumes that you have mastered the basic knowledge and operation of `Apache Paimon`_.
- For the knowledge not mentioned in this article,
- you can obtain it from its `Official Documentation`_.
-
-By using kyuubi, we can run SQL queries towards Apache Paimon which is more
-convenient, easy to understand, and easy to expand than directly using flink.
-
-Apache Paimon Integration
--------------------------
-
-To enable the integration of kyuubi flink sql engine and Apache Paimon, you need to:
-
-- Referencing the Apache Paimon :ref:`dependencies<flink-paimon-deps>`
-
-.. _flink-paimon-deps:
-
-Dependencies
-************
-
-The **classpath** of kyuubi flink sql engine with Apache Paimon supported consists of
-
-1. kyuubi-flink-sql-engine-\ |release|\ _2.12.jar, the engine jar deployed with a Kyuubi distribution
-2. a copy of flink distribution
-3. paimon-flink-<version>.jar (example: paimon-flink-1.18-0.8.1.jar), which can be found in the `Apache Paimon Supported Engines Flink`_
-4. flink-shaded-hadoop-2-uber-<version>.jar, which code can be found in the `Pre-bundled Hadoop Jar`_
-
-In order to make the Apache Paimon packages visible for the runtime classpath of engines, you need to:
-
-1. Put the Apache Paimon packages into ``$FLINK_HOME/lib`` directly
-2. Setting the HADOOP_CLASSPATH environment variable or copy the `Pre-bundled Hadoop Jar`_ to flink/lib.
-
-.. warning::
- Please mind the compatibility of different Apache Paimon and Flink versions, which can be confirmed on the page of `Apache Paimon multi engine support`_.
-
-Apache Paimon Operations
-------------------------
-
-Taking ``CREATE CATALOG`` as a example,
-
-.. code-block:: sql
-
- CREATE CATALOG my_catalog WITH (
- 'type'='paimon',
- 'warehouse'='file:/tmp/paimon'
- );
-
- USE CATALOG my_catalog;
-
-Taking ``CREATE TABLE`` as a example,
-
-.. code-block:: sql
-
- CREATE TABLE MyTable (
- user_id BIGINT,
- item_id BIGINT,
- behavior STRING,
- dt STRING,
- PRIMARY KEY (dt, user_id) NOT ENFORCED
- ) PARTITIONED BY (dt) WITH (
- 'bucket' = '4'
- );
-
-Taking ``Query Table`` as a example,
-
-.. code-block:: sql
-
- SET 'execution.runtime-mode' = 'batch';
- SELECT * FROM orders WHERE catalog_id=1025;
-
-Taking ``Streaming Query`` as a example,
-
-.. code-block:: sql
-
- SET 'execution.runtime-mode' = 'streaming';
- SELECT * FROM MyTable /*+ OPTIONS ('log.scan'='latest') */;
-
-Taking ``Rescale Bucket`` as a example,
-
-.. code-block:: sql
-
- ALTER TABLE my_table SET ('bucket' = '4');
- INSERT OVERWRITE my_table PARTITION (dt = '2022-01-01');
-
-
-.. _Apache Paimon: https://paimon.apache.org/
-.. _Official Documentation: https://paimon.apache.org/docs/master/
-.. _Apache Paimon Supported Engines Flink: https://paimon.apache.org/docs/master/engines/flink/#preparing-paimon-jar-file
-.. _Pre-bundled Hadoop Jar: https://flink.apache.org/downloads/#additional-components
-.. _Apache Paimon multi engine support: https://paimon.apache.org/docs/master/engines/overview/
diff --git a/docs/connector/hive/iceberg.md b/docs/connector/hive/iceberg.md
new file mode 100644
index 0000000000..b387959ddb
--- /dev/null
+++ b/docs/connector/hive/iceberg.md
@@ -0,0 +1,94 @@
+<!--
+- 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.
+-->
+
+# Iceberg
+
+[Apache Iceberg](https://iceberg.apache.org/) is an open table format for huge analytic datasets.
+Iceberg adds tables to compute engines including Spark, Trino, PrestoDB, Flink, Hive and Impala
+using a high-performance table format that works just like a SQL table.
+
+```{tip}
+This article assumes that you have mastered the basic knowledge and operation of [Iceberg](https://iceberg.apache.org/).
+For the knowledge about Iceberg not mentioned in this article,
+you can obtain it from its [Official Documentation](https://iceberg.apache.org/docs/latest/).
+```
+
+By using kyuubi, we can run SQL queries towards Iceberg which is more
+convenient, easy to understand, and easy to expand than directly using
+hive to manipulate Iceberg.
+
+## Iceberg Integration
+
+To enable the integration of Kyuubi Hive SQL engine and Iceberg, you need to:
+
+- Referencing the Iceberg [dependencies](#dependencies)
+- Setting the Hive extension and catalog [configurations](#configurations)
+
+### Dependencies
+
+The **classpath** of Kyuubi Hive SQL engine with Iceberg supported consists of:
+
+1. kyuubi-hive-sql-engine-{{ release }}_2.12.jar, the engine jar deployed with a Kyuubi distribution
+2. A copy of Hive distribution
+3. `iceberg-hive-runtime-<hive.version>_<scala.version>-<iceberg.version>.jar` (example: `iceberg-hive-runtime-3.2_2.12-0.14.0.jar`), which can be found in the [Maven Central](https://mvnrepository.com/artifact/org.apache.iceberg)
+
+In order to make the Iceberg packages visible for the runtime classpath of engines, we can use the method:
+
+1. Execute `ADD JAR` statement in the Kyuubi to add dependencies to Hive's auxiliary classpath. For example:
+
+ ```sql
+ ADD JAR /path/to/iceberg-hive-runtime.jar;
+ ```
+
+```{warning}
+Please mind the compatibility of different Iceberg and Hive versions, which can
+be confirmed on the page of [Iceberg multi engine support](https://iceberg.apache.org/multi-engine-support/).
+```
+
+### Configurations
+
+To activate functionality of Iceberg, we can set the following configurations:
+Set `iceberg.engine.hive.enabled=true` in the Hadoop configuration. For example, setting this in the `hive-site.xml`.
+
+## Iceberg Operations
+
+Taking `CREATE TABLE` as an example:
+
+```sql
+CREATE TABLE x (i int) STORED BY 'org.apache.iceberg.mr.hive.HiveIcebergStorageHandler';
+CREATE EXTERNAL TABLE x (i int) STORED BY 'org.apache.iceberg.mr.hive.HiveIcebergStorageHandler';
+```
+
+Taking `SELECT` as an example:
+
+```sql
+SELECT * FROM foo;
+```
+
+Taking `INSERT` as an example:
+
+```sql
+INSERT INTO foo VALUES (1, 'a'), (2, 'b'), (3, 'c');
+INSERT OVERWRITE TABLE target SELECT * FROM source;
+```
+
+Taking `ALTER` as an example:
+
+```sql
+ALTER TABLE t SET TBLPROPERTIES('...'='...');
+```
+
diff --git a/docs/connector/hive/iceberg.rst b/docs/connector/hive/iceberg.rst
deleted file mode 100644
index 64ee88875a..0000000000
--- a/docs/connector/hive/iceberg.rst
+++ /dev/null
@@ -1,103 +0,0 @@
-.. 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.
-
-`Iceberg`_
-==========
-
-Apache Iceberg is an open table format for huge analytic datasets.
-Iceberg adds tables to compute engines including Spark, Trino, PrestoDB, Flink, Hive and Impala
-using a high-performance table format that works just like a SQL table.
-
-.. tip::
- This article assumes that you have mastered the basic knowledge and operation of `Iceberg`_.
- For the knowledge about Iceberg not mentioned in this article,
- you can obtain it from its `Official Documentation`_.
-
-By using kyuubi, we can run SQL queries towards Iceberg which is more
-convenient, easy to understand, and easy to expand than directly using
-hive to manipulate Iceberg.
-
-Iceberg Integration
--------------------
-
-To enable the integration of kyuubi hive sql engine and Iceberg, you need to:
-
-- Referencing the Iceberg :ref:`dependencies<hive-iceberg-deps>`
-- Setting the hive extension and catalog :ref:`configurations<hive-iceberg-conf>`
-
-.. _hive-iceberg-deps:
-
-Dependencies
-************
-
-The **classpath** of kyuubi hive sql engine with Iceberg supported consists of
-
-1. kyuubi-hive-sql-engine-\ |release|\ _2.12.jar, the engine jar deployed with a Kyuubi distribution
-2. a copy of hive distribution
-3. iceberg-hive-runtime-<hive.version>_<scala.version>-<iceberg.version>.jar (example: iceberg-hive-runtime-3.2_2.12-0.14.0.jar), which can be found in the `Maven Central`_
-
-In order to make the Iceberg packages visible for the runtime classpath of engines, we can use the method:
-
-1. Execute ADD JAR statement in the Kyuubi to add dependencies to Hive’s auxiliary classpath. For example:
-
-.. code-block:: sql
-
- ADD JAR /path/to/iceberg-hive-runtime.jar;
-
-.. warning::
- Please mind the compatibility of different Iceberg and Hive versions, which can be confirmed on the page of `Iceberg multi engine support`_.
-
-.. _hive-iceberg-conf:
-
-Configurations
-**************
-
-To activate functionality of Iceberg, we can set the following configurations:
-Set ``iceberg.engine.hive.enabled=true`` in the Hadoop configuration. For example, setting this in the hive-site.xml
-
-Iceberg Operations
-------------------
-
-Taking ``CREATE TABLE`` as a example,
-
-.. code-block:: sql
-
- CREATE TABLE x (i int) STORED BY 'org.apache.iceberg.mr.hive.HiveIcebergStorageHandler';
- CREATE EXTERNAL TABLE x (i int) STORED BY 'org.apache.iceberg.mr.hive.HiveIcebergStorageHandler';
-
-Taking ``SELECT`` as a example,
-
-.. code-block:: sql
-
- SELECT * FROM foo;
-
-Taking ``INSERT`` as a example,
-
-.. code-block:: sql
-
- INSERT INTO foo VALUES (1, 'a'), (2, 'b'), (3, 'c');
- INSERT OVERWRITE TABLE target SELECT * FROM source;
-
-Taking ``ALTER`` as a example,
-
-.. code-block:: sql
-
- ALTER TABLE t SET TBLPROPERTIES('...'='...');
-
-
-.. _Iceberg: https://iceberg.apache.org/
-.. _Official Documentation: https://iceberg.apache.org/docs/latest/
-.. _Maven Central: https://mvnrepository.com/artifact/org.apache.iceberg
-.. _Iceberg multi engine support: https://iceberg.apache.org/multi-engine-support/
diff --git a/docs/connector/hive/index.md b/docs/connector/hive/index.md
new file mode 100644
index 0000000000..e32cf48919
--- /dev/null
+++ b/docs/connector/hive/index.md
@@ -0,0 +1,26 @@
+<!--
+- 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.
+-->
+
+# Connectors For Hive SQL Query Engine
+
+```{toctree}
+:maxdepth: 2
+
+paimon
+iceberg
+```
+
diff --git a/docs/connector/hive/index.rst b/docs/connector/hive/index.rst
deleted file mode 100644
index d96f8b0418..0000000000
--- a/docs/connector/hive/index.rst
+++ /dev/null
@@ -1,23 +0,0 @@
-.. 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.
-
-Connectors for Hive SQL Query Engine
-====================================
-
-.. toctree::
- :maxdepth: 2
-
- paimon
- iceberg
diff --git a/docs/connector/hive/paimon.md b/docs/connector/hive/paimon.md
new file mode 100644
index 0000000000..c4ddc315e4
--- /dev/null
+++ b/docs/connector/hive/paimon.md
@@ -0,0 +1,94 @@
+<!--
+- 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.
+-->
+
+# Apache Paimon
+
+[Apache Paimon](https://paimon.apache.org/) is a streaming data lake platform that
+supports high-speed data ingestion, change data tracking and efficient real-time analytics.
+
+```{tip}
+This article assumes that you have mastered the basic knowledge and operation of [Apache Paimon](https://paimon.apache.org/).
+For the knowledge about Apache Paimon not mentioned in this article, you can obtain it from its [Official Documentation](https://paimon.apache.org/docs/master/).
+```
+
+By using Kyuubi, we can run SQL queries towards Apache Paimon which is more
+convenient, easy to understand, and easy to expand than directly using
+Hive to manipulate Apache Paimon.
+
+## Apache Paimon Integration
+
+To enable the integration of Kyuubi Hive SQL engine and Apache Paimon, you need to:
+
+- Referencing the Apache Paimon [dependencies](#dependencies)
+- Setting the environment variable [configurations](#configurations)
+
+### Dependencies
+
+The **classpath** of Kyuubi Hive SQL engine with Iceberg supported consists of:
+
+1. kyuubi-hive-sql-engine-{{ release }}_2.12.jar, the engine jar deployed with a Kyuubi distribution
+2. A copy of Hive distribution
+3. `paimon-hive-connector-<hive.binary.version>-<paimon.version>.jar` (example: `paimon-hive-connector-3.1-0.4-SNAPSHOT.jar`), which can be found in the [Apache Paimon Supported Engines Hive](https://paimon.apache.org/docs/master/engines/hive/)
+
+In order to make the Hive packages visible for the runtime classpath of engines, we can use one of these methods:
+
+1. You can create an `auxlib` folder under the root directory of Hive, and copy `paimon-hive-connector-3.1-<paimon.version>.jar` into `auxlib`.
+2. Execute `ADD JAR` statement in the Kyuubi to add dependencies to Hive's auxiliary classpath. For example:
+
+ ```sql
+ ADD JAR /path/to/paimon-hive-connector-3.1-<paimon.version>.jar;
+ ```
+
+```{warning}
+The second method is not recommended. If you're using the MR execution engine
+and running a join statement, you may be faced with the exception
+`org.apache.hive.com.esotericsoftware.kryo.kryoexception: unable to find class.`
+```
+
+```{warning}
+Please mind the compatibility of different Apache Paimon and Hive versions,
+which can be confirmed on the page of [Apache Paimon multi engine support](https://paimon.apache.org/docs/master/engines/overview/).
+```
+
+### Configurations
+
+If you are using HDFS, make sure that the environment variable `HADOOP_HOME` or `HADOOP_CONF_DIR` is set.
+
+## Apache Paimon Operations
+
+Apache Paimon only supports only reading table store tables through Hive.
+A common scenario is to write data with Spark or Flink and read data with Hive.
+You can follow this document [Apache Paimon Quick Start with Paimon Hive Catalog](https://paimon.apache.org/docs/master/engines/hive/#quick-start-with-paimon-hive-catalog)
+to write data to a table which can also be accessed directly from Hive, and then
+use Kyuubi Hive SQL engine to query the table with the following SQL `SELECT` statement.
+
+Taking `Query Data` as an example:
+
+```sql
+SELECT a, b FROM test_table ORDER BY a;
+```
+
+Taking `Query External Table` as an example:
+
+```sql
+CREATE EXTERNAL TABLE external_test_table
+STORED BY 'org.apache.paimon.hive.PaimonStorageHandler'
+LOCATION '/path/to/table/store/warehouse/default.db/test_table';
+
+SELECT a, b FROM test_table ORDER BY a;
+```
+
diff --git a/docs/connector/hive/paimon.rst b/docs/connector/hive/paimon.rst
deleted file mode 100644
index 188285c2d8..0000000000
--- a/docs/connector/hive/paimon.rst
+++ /dev/null
@@ -1,100 +0,0 @@
-.. 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.
-
-Apache Paimon
-=============
-
-`Apache Paimon`_ is a streaming data lake platform that supports high-speed data ingestion, change data tracking and efficient real-time analytics.
-
-.. tip::
- This article assumes that you have mastered the basic knowledge and operation of `Apache Paimon`_.
- For the knowledge about Apache Paimon not mentioned in this article,
- you can obtain it from its `Official Documentation`_.
-
-By using Kyuubi, we can run SQL queries towards Apache Paimon which is more
-convenient, easy to understand, and easy to expand than directly using
-Hive to manipulate Apache Paimon.
-
-Apache Paimon Integration
--------------------------
-
-To enable the integration of kyuubi hive sql engine and Apache Paimon, you need to:
-
-- Referencing the Apache Paimon :ref:`dependencies<hive-paimon-deps>`
-- Setting the environment variable :ref:`configurations<hive-paimon-conf>`
-
-.. _hive-paimon-deps:
-
-Dependencies
-************
-
-The **classpath** of kyuubi hive sql engine with Iceberg supported consists of
-
-1. kyuubi-hive-sql-engine-\ |release|\ _2.12.jar, the engine jar deployed with a Kyuubi distribution
-2. a copy of hive distribution
-3. paimon-hive-connector-<hive.binary.version>-<paimon.version>.jar (example: paimon-hive-connector-3.1-0.4-SNAPSHOT.jar), which can be found in the `Apache Paimon Supported Engines Hive`_
-
-In order to make the Hive packages visible for the runtime classpath of engines, we can use one of these methods:
-
-1. You can create an auxlib folder under the root directory of Hive, and copy paimon-hive-connector-3.1-<paimon.version>.jar into auxlib.
-2. Execute ADD JAR statement in the Kyuubi to add dependencies to Hive’s auxiliary classpath. For example:
-
-.. code-block:: sql
-
- ADD JAR /path/to/paimon-hive-connector-3.1-<paimon.version>.jar;
-
-.. warning::
- The second method is not recommended. If you’re using the MR execution engine and running a join statement, you may be faced with the exception
- ``org.apache.hive.com.esotericsoftware.kryo.kryoexception: unable to find class.``
-
-.. warning::
- Please mind the compatibility of different Apache Paimon and Hive versions, which can be confirmed on the page of `Apache Paimon multi engine support`_.
-
-.. _hive-paimon-conf:
-
-Configurations
-**************
-
-If you are using HDFS, make sure that the environment variable HADOOP_HOME or HADOOP_CONF_DIR is set.
-
-Apache Paimon Operations
-------------------------
-
-Apache Paimon only supports only reading table store tables through Hive.
-A common scenario is to write data with Spark or Flink and read data with Hive.
-You can follow this document `Apache Paimon Quick Start with Paimon Hive Catalog`_ to write data to a table which can also be accessed directly from Hive.
-and then use Kyuubi Hive SQL engine to query the table with the following SQL ``SELECT`` statement.
-
-Taking ``Query Data`` as an example,
-
-.. code-block:: sql
-
- SELECT a, b FROM test_table ORDER BY a;
-
-Taking ``Query External Table`` as an example,
-
-.. code-block:: sql
-
- CREATE EXTERNAL TABLE external_test_table
- STORED BY 'org.apache.paimon.hive.PaimonStorageHandler'
- LOCATION '/path/to/table/store/warehouse/default.db/test_table';
-
- SELECT a, b FROM test_table ORDER BY a;
-
-.. _Apache Paimon: https://paimon.apache.org/
-.. _Official Documentation: https://paimon.apache.org/docs/master/
-.. _Apache Paimon Quick Start with Paimon Hive Catalog: https://paimon.apache.org/docs/master/engines/hive/#quick-start-with-paimon-hive-catalog
-.. _Apache Paimon Supported Engines Hive: https://paimon.apache.org/docs/master/engines/hive/
-.. _Apache Paimon multi engine support: https://paimon.apache.org/docs/master/engines/overview/
diff --git a/docs/connector/index.md b/docs/connector/index.md
new file mode 100644
index 0000000000..da16a2a5e6
--- /dev/null
+++ b/docs/connector/index.md
@@ -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.
+-->
+
+# Connectors
+
+This section describes the connectors available for different kyuubi engines to access data from various data sources.
+
+```{note}
+Is your connector missing?
+[Report an feature request](https://kyuubi.apache.org/issue_tracking.html) or help us document it.
+```
+
+```{toctree}
+:maxdepth: 2
+
+spark/index
+```
+
+```{toctree}
+:maxdepth: 2
+
+flink/index
+```
+
+```{toctree}
+:maxdepth: 2
+
+hive/index
+```
+
+```{toctree}
+:maxdepth: 2
+
+trino/index
+```
+
diff --git a/docs/connector/index.rst b/docs/connector/index.rst
deleted file mode 100644
index f7911e6fe7..0000000000
--- a/docs/connector/index.rst
+++ /dev/null
@@ -1,42 +0,0 @@
-.. 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.
-
-Connectors
-==========
-
-This section describes the connectors available for different kyuubi engines to access data from various data sources.
-
-.. note:: Is your connector missing?
- `Report an feature request <https://kyuubi.apache.org/issue_tracking.html>`_ or help us document it.
-
-.. toctree::
- :maxdepth: 2
-
- spark/index
-
-.. toctree::
- :maxdepth: 2
-
- flink/index
-
-.. toctree::
- :maxdepth: 2
-
- hive/index
-
-.. toctree::
- :maxdepth: 2
-
- trino/index
diff --git a/docs/connector/spark/delta_lake.md b/docs/connector/spark/delta_lake.md
new file mode 100644
index 0000000000..7d0c62a99f
--- /dev/null
+++ b/docs/connector/spark/delta_lake.md
@@ -0,0 +1,84 @@
+<!--
+- 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.
+-->
+
+# Delta Lake
+
+[Delta Lake](https://delta.io/) is an open-source project that enables building a Lakehouse
+Architecture on top of existing storage systems such as S3, ADLS, GCS, and HDFS.
+
+```{tip}
+This article assumes that you have mastered the basic knowledge and operation of [Delta Lake](https://delta.io/).
+For the knowledge about Delta Lake not mentioned in this article, you can obtain it from its
+[Official Documentation](https://docs.delta.io/latest/index.html).
+```
+
+By using kyuubi, we can run SQL queries towards Delta Lake which is more
+convenient, easy to understand, and easy to expand than directly using
+spark to manipulate Delta Lake.
+
+## Delta Lake Integration
+
+To enable the integration of Kyuubi Spark SQL engine and Delta Lake through Spark DataSource V2 API, you need to:
+
+- Referencing the Delta Lake [dependencies](#dependencies)
+- Setting the Spark extension and catalog [configurations](#configurations)
+
+### Dependencies
+
+The **classpath** of Kyuubi Spark SQL engine with Delta Lake supported consists of:
+
+1. kyuubi-spark-sql-engine-{{ release }}_2.12.jar, the engine jar deployed with a Kyuubi distribution
+2. A copy of Spark distribution
+3. `delta-core` & `delta-storage`, which can be found in the [Maven Central](https://mvnrepository.com/artifact/io.delta/delta-core)
+
+In order to make the delta packages visible for the runtime classpath of engines, we can use one of these methods:
+
+1. Put the delta packages into `$SPARK_HOME/jars` directly
+2. Set `spark.jars=/path/to/delta-core,/path/to/delta-storage`
+
+```{warning}
+Please mind the compatibility of different Delta Lake and Spark versions, which
+can be confirmed on the page of [delta release notes](https://github.com/delta-io/delta/releases).
+```
+
+### Configurations
+
+To activate the functionality of Delta Lake, we can set the following configurations:
+
+```properties
+spark.sql.extensions=io.delta.sql.DeltaSparkSessionExtension
+spark.sql.catalog.spark_catalog=org.apache.spark.sql.delta.catalog.DeltaCatalog
+```
+
+## Delta Lake Operations
+
+As for end-users, who only use a pure SQL interface, there aren't much differences between
+using a delta table and a regular hive table. Unless you are going to use some advanced
+features, but they are still SQL, just more syntax added.
+
+Taking `CREATE A TABLE` as an example:
+
+```sql
+CREATE TABLE IF NOT EXISTS kyuubi_delta (
+ id INT,
+ name STRING,
+ org STRING,
+ url STRING,
+ start TIMESTAMP
+) USING DELTA;
+```
+
diff --git a/docs/connector/spark/delta_lake.rst b/docs/connector/spark/delta_lake.rst
deleted file mode 100644
index b306358017..0000000000
--- a/docs/connector/spark/delta_lake.rst
+++ /dev/null
@@ -1,95 +0,0 @@
-.. 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.
-
-`Delta Lake`_
-=============
-
-Delta Lake is an open-source project that enables building a Lakehouse
-Architecture on top of existing storage systems such as S3, ADLS, GCS,
-and HDFS.
-
-.. tip::
- This article assumes that you have mastered the basic knowledge and
- operation of `Delta Lake`_.
- For the knowledge about Delta Lake not mentioned in this article,
- you can obtain it from its `Official Documentation`_.
-
-By using kyuubi, we can run SQL queries towards Delta Lake which is more
-convenient, easy to understand, and easy to expand than directly using
-spark to manipulate Delta Lake.
-
-Delta Lake Integration
-----------------------
-
-To enable the integration of Kyuubi Spark SQL engine and Delta Lake through
-Spark DataSource V2 API, you need to:
-
-- Referencing the Delta Lake :ref:`dependencies<spark-delta-lake-deps>`
-- Setting the Spark extension and catalog :ref:`configurations<spark-delta-lake-conf>`
-
-.. _spark-delta-lake-deps:
-
-Dependencies
-************
-
-The **classpath** of Kyuubi Spark SQL engine with Delta Lake supported consists of
-
-1. kyuubi-spark-sql-engine-\ |release|\ _2.12.jar, the engine jar deployed with a Kyuubi distribution
-2. a copy of Spark distribution
-3. delta-core & delta-storage, which can be found in the `Maven Central`_
-
-In order to make the delta packages visible for the runtime classpath of engines, we can use one of these methods:
-
-1. Put the delta packages into ``$SPARK_HOME/jars`` directly
-2. Set ``spark.jars=/path/to/delta-core,/path/to/delta-storage``
-
-.. warning::
- Please mind the compatibility of different Delta Lake and Spark versions, which can be confirmed on the page of `delta release notes`_.
-
-.. _spark-delta-lake-conf:
-
-Configurations
-**************
-
-To activate functionality of Delta Lake, we can set the following configurations:
-
-.. code-block:: properties
-
- spark.sql.extensions=io.delta.sql.DeltaSparkSessionExtension
- spark.sql.catalog.spark_catalog=org.apache.spark.sql.delta.catalog.DeltaCatalog
-
-Delta Lake Operations
----------------------
-
-As for end-users, who only use a pure SQL interface, there aren't much differences between
-using a delta table and a regular hive table. Unless you are going to use some advanced
-features, but they are still SQL, just more syntax added.
-
-Taking ``CREATE A TABLE`` as a example,
-
-.. code-block:: sql
-
- CREATE TABLE IF NOT EXISTS kyuubi_delta (
- id INT,
- name STRING,
- org STRING,
- url STRING,
- start TIMESTAMP
- ) USING DELTA;
-
-.. _Delta Lake: https://delta.io/
-.. _Official Documentation: https://docs.delta.io/latest/index.html
-.. _Maven Central: https://mvnrepository.com/artifact/io.delta/delta-core
-.. _Delta release notes: https://github.com/delta-io/delta/releases
\ No newline at end of file
diff --git a/docs/connector/spark/delta_lake_with_azure_blob.md b/docs/connector/spark/delta_lake_with_azure_blob.md
new file mode 100644
index 0000000000..24e2125028
--- /dev/null
+++ b/docs/connector/spark/delta_lake_with_azure_blob.md
@@ -0,0 +1,327 @@
+<!--
+- 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.
+-->
+
+# Delta Lake With Microsoft Azure Blob Storage
+
+## Registration And Configuration
+
+### Register An Account And Log In
+
+Regarding the Microsoft Azure account, please contact your organization or register an account as an individual.
+For details, please refer to the [Microsoft Azure official website](https://azure.microsoft.com/en-gb/).
+
+### Create Storage Container
+
+After logging in with your Microsoft Azure account, please follow the steps below to create a data storage container:
+
+
+
+### Get Access Key
+
+
+
+## Deploy Spark
+
+### Download Spark Package
+
+Download spark package that matches your environment from [spark official website](https://spark.apache.org/downloads.html).
+And then unpackage:
+
+```bash
+tar -xzvf spark-3.2.0-bin-hadoop3.2.tgz
+```
+
+### Config Spark
+
+Enter the `$SPARK_HOME/conf` directory and execute:
+
+```shell
+cp spark-defaults.conf.template spark-defaults.conf
+```
+
+Add following configuration to spark-defaults.conf, please refer to your own local configuration for specific personalized configuration:
+
+```properties
+spark.master spark://<YOUR_HOST>:7077
+spark.sql.extensions io.delta.sql.DeltaSparkSessionExtension
+spark.sql.catalog.spark_catalog org.apache.spark.sql.delta.catalog.DeltaCatalog
+```
+
+Create a new file named `core-site.xml` under `$SPARK_HOME/conf` directory, and add following configuration:
+
+```xml
+<?xml version="1.0" encoding="UTF-8"?>
+<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
+<configuration>
+<property>
+ <name>fs.AbstractFileSystem.wasb.Impl</name>
+ <value>org.apache.hadoop.fs.azure.Wasb</value>
+ </property>
+ <property>
+ <name>fs.azure.account.key.YOUR_AZURE_ACCOUNT.blob.core.windows.net</name>
+ <value>YOUR_AZURE_ACCOUNT_ACCESS_KEY</value>
+ </property>
+ <property>
+ <name>fs.azure.block.blob.with.compaction.dir</name>
+ <value>/hbase/WALs,/tmp/myblobfiles</value>
+ </property>
+ <property>
+ <name>fs.azure</name>
+ <value>org.apache.hadoop.fs.azure.NativeAzureFileSystem</value>
+ </property>
+<property>
+ <name>fs.azure.enable.append.support</name>
+ <value>true</value>
+ </property>
+</configuration>
+```
+
+### Copy Dependencies To Spark
+
+Copy jar packages required by delta lake and microsoft azure to ./spark/jars directory:
+
+```shell
+wget https://repo1.maven.org/maven2/io/delta/delta-core_2.12/1.0.0/delta-core_2.12-1.0.0.jar -O ./spark/jars/delta-core_2.12-1.0.0.jar
+wget https://repo1.maven.org/maven2/com/microsoft/azure/azure-storage/8.6.6/azure-storage-8.6.6.jar -O ./spark/jars/azure-storage-8.6.6.jar
+wget https://repo1.maven.org/maven2/com/azure/azure-storage-blob/12.14.2/azure-storage-blob-12.14.2.jar -O ./spark/jars/azure-storage-blob-12.14.2.jar
+wget https://repo1.maven.org/maven2/org/apache/hadoop/hadoop-azure/3.1.1/hadoop-azure-3.1.1.jar -O ./spark/jars/hadoop-azure-3.1.1.jar
+```
+
+### Start Spark Standalone Cluster
+
+```shell
+./spark/sbin/start-master.sh -h <YOUR_HOST> -p 7077 --webui-port 9090
+./spark/sbin/start-worker.sh spark://<YOUR_HOST>:7077
+```
+
+### Test The Connectivity Of Spark And Delta Lake
+
+Start spark shell:
+
+```shell
+./bin/spark-shell
+```
+
+Generate a piece of random data and push them to delta lake:
+
+```scala
+scala> val data = spark.range(1000, 2000)
+scala> data.write.format("delta").mode("overwrite").save("wasbs://<YOUR_CONTAINER_NAME>@<YOUR_AZURE_ACCOUNT>.blob.core.windows.net/<YOUR_TABLE_NAME>")
+```
+
+After this, you can check your data on azure web UI.
+For example, my container name is 1000 and table name is alexDemo20211127:
+
+
+
+You can also check data by reading back the data from delta lake:
+
+```scala
+scala> val df=spark.read.format("delta").load("wasbs://<YOUR_CONTAINER_NAME>@<YOUR_AZURE_ACCOUNT>.blob.core.windows.net/<YOUR_TABLE_NAME>")
+scala> df.show()
+```
+
+If there is no problem with the above, it proves that spark has been built with delta lake.
+
+## Deploy Kyuubi
+
+### Install Kyuubi
+
+1. Download the latest version of kyuubi from [kyuubi download page](https://kyuubi.apache.org/releases.html).
+
+2. Unpackage
+
+ ```{parsed-literal}
+ tar -xzvf apache-kyuubi-{{ release }}-bin.tgz
+ ```
+
+### Config Kyuubi
+
+Enter the ./kyuubi/conf directory
+
+```shell
+cp kyuubi-defaults.conf.template kyuubi-defaults.conf
+vim kyuubi-defaults.conf
+```
+
+Add the following content:
+
+```properties
+spark.master spark://<YOUR_HOST>:7077
+kyuubi.authentication NONE
+kyuubi.frontend.bind.host <YOUR_HOST>
+kyuubi.frontend.bind.port 10009
+# If you use your own zk cluster, you need to configure your zk host port.
+# kyuubi.ha.addresses <YOUR_HOST>:2181
+```
+
+### Start Kyuubi
+
+```shell
+bin/kyuubi start
+```
+
+Check kyuubi log, in order to check kyuubi start status and find the jdbc connection url:
+
+```text
+2021-11-26 17:49:50.235 INFO service.ThriftFrontendService: Starting and exposing JDBC connection at: jdbc:kyuubi://HOST:10009/
+2021-11-26 17:49:50.265 INFO client.ServiceDiscovery: Created a /kyuubi/serviceUri=host:10009;version=1.3.1-incubating;sequence=0000000037 on ZooKeeper for KyuubiServer uri: host:10009
+2021-11-26 17:49:50.267 INFO server.KyuubiServer: Service[KyuubiServer] is started.
+```
+
+You can get the jdbc connection url by the log above.
+
+### Test The Connectivity Of Kyuubi And Delta Lake
+
+Use `$KYUUBI_HOME/bin/kyuubi-beeline` tool,
+
+```shell
+./bin/kyuubi-beeline -u 'jdbc:kyuubi://<YOUR_HOST>:10009/'
+```
+
+At the same time, you can also check whether the engine is running on the spark UI:
+
+
+
+When the engine started, it will expose a thrift endpoint and register itself into
+ZooKeeper, Kyuubi server can get the connection info from ZooKeeper and establish the connection to the engine.
+So, you can check the registration details in zookeeper path '/kyuubi_USER/anonymous'.
+
+## Dealing Delta Lake Data By Using Kyuubi Examples
+
+Operate delta-lake data through SQL:
+
+### Create Table
+
+```sql
+-- Create or replace table with path
+CREATE OR REPLACE TABLE delta.`wasbs://1000@azure_account.blob.core.windows.net/alexDemo20211129` (
+ date DATE,
+ eventId STRING,
+ eventType STRING,
+ data STRING)
+USING DELTA
+PARTITIONED BY (date);
+```
+
+### Insert Data
+
+#### Append Mode
+
+```sql
+INSERT INTO delta.`wasbs://1000@azure_account.blob.core.windows.net/alexDemo20211129` (
+ date,
+ eventId,
+ eventType,
+ data)
+VALUES
+ (now(),'001','test','Hello World!'),
+ (now(),'002','test','Hello World!'),
+ (now(),'003','test','Hello World!');
+```
+
+Result:
+
+```text
++-------------+----------+------------+---------------+
+| date | eventId | eventType | data |
++-------------+----------+------------+---------------+
+| 2021-11-29 | 001 | test | Hello World! |
+| 2021-11-29 | 003 | test | Hello World! |
+| 2021-11-29 | 002 | test | Hello World! |
++-------------+----------+------------+---------------+
+```
+
+#### Overwrite Mode
+
+```sql
+INSERT OVERWRITE TABLE delta.`wasbs://1000@azure_account.blob.core.windows.net/alexDemo20211129`(
+ date,
+ eventId,
+ eventType,
+ data)
+VALUES
+(now(),'001','test','hello kyuubi'),
+(now(),'002','test','hello kyuubi');
+```
+
+Result:
+
+```text
++-------------+----------+------------+---------------+
+| date | eventId | eventType | data |
++-------------+----------+------------+---------------+
+| 2021-11-29 | 002 | test | hello kyuubi |
+| 2021-11-29 | 001 | test | hello kyuubi |
++-------------+----------+------------+---------------+
+```
+
+### Delete Table Data
+
+```sql
+DELETE FROM
+ delta.`wasbs://1000@azure_account.blob.core.windows.net/alexDemo20211129`
+WHERE eventId = 002;
+```
+
+Result:
+
+```text
++-------------+----------+------------+---------------+
+| date | eventId | eventType | data |
++-------------+----------+------------+---------------+
+| 2021-11-29 | 001 | test | hello kyuubi |
++-------------+----------+------------+---------------+
+```
+
+### Update Table Data
+
+```sql
+UPDATE
+ delta.`wasbs://1000@azure_account.blob.core.windows.net/alexDemo20211129`
+SET data = 'This is a test for update data.'
+WHERE eventId = 001;
+```
+
+Result:
+
+```text
++-------------+----------+------------+----------------------------------+
+| date | eventId | eventType | data |
++-------------+----------+------------+----------------------------------+
+| 2021-11-29 | 001 | test | This is a test for update data. |
++-------------+----------+------------+----------------------------------+
+```
+
+### Select Table Data
+
+```sql
+SELECT *
+FROM
+ delta.`wasbs://1000@azure_account.blob.core.windows.net/alexDemo20211129`;
+```
+
+Result:
+
+```text
++-------------+----------+------------+----------------------------------+
+| date | eventId | eventType | data |
++-------------+----------+------------+----------------------------------+
+| 2021-11-29 | 001 | test | This is a test for update data. |
++-------------+----------+------------+----------------------------------+
+```
+
diff --git a/docs/connector/spark/delta_lake_with_azure_blob.rst b/docs/connector/spark/delta_lake_with_azure_blob.rst
deleted file mode 100644
index 4955bdc213..0000000000
--- a/docs/connector/spark/delta_lake_with_azure_blob.rst
+++ /dev/null
@@ -1,349 +0,0 @@
-.. 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.
-
-Delta Lake with Microsoft Azure Blob Storage
-============================================
-
-Registration And Configuration
-----------------------------------------------
-
-Register An Account And Log In
-******************************
-
-Regarding the Microsoft Azure account, please contact your organization or register
-an account as an individual. For details, please refer to the `Microsoft Azure official
-website`_.
-
-Create Storage Container
-************************
-
-After logging in with your Microsoft Azure account, please follow the steps below to create a data storage container:
-
-.. image:: ../../imgs/deltalake/azure_create_new_container.png
-
-Get Access Key
-**************
-
-.. image:: ../../imgs/deltalake/azure_create_azure_access_key.png
-
-Deploy Spark
-------------
-
-Download Spark Package
-**********************
-
-Download spark package that matches your environment from `spark official website`_.
-And then unpackage:
-```shell
-tar -xzvf spark-3.2.0-bin-hadoop3.2.tgz
-```
-
-Config Spark
-************
-
-Enter the ``$SPARK_HOME/conf`` directory and execute:
-
-.. code-block:: shell
-
- cp spark-defaults.conf.template spark-defaults.conf
-
-Add following configuration to spark-defaults.conf, please refer to your own local configuration for specific personalized configuration:
-
-.. code-block:: properties
-
- spark.master spark://<YOUR_HOST>:7077
- spark.sql.extensions io.delta.sql.DeltaSparkSessionExtension
- spark.sql.catalog.spark_catalog org.apache.spark.sql.delta.catalog.DeltaCatalog
-
-Create a new file named ``core-site.xml`` under ``$SPARK_HOME/conf`` directory, and add following configuration:
-
-.. code-block:: xml
-
- <?xml version="1.0" encoding="UTF-8"?>
- <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
- <configuration>
- <property>
- <name>fs.AbstractFileSystem.wasb.Impl</name>
- <value>org.apache.hadoop.fs.azure.Wasb</value>
- </property>
- <property>
- <name>fs.azure.account.key.YOUR_AZURE_ACCOUNT.blob.core.windows.net</name>
- <value>YOUR_AZURE_ACCOUNT_ACCESS_KEY</value>
- </property>
- <property>
- <name>fs.azure.block.blob.with.compaction.dir</name>
- <value>/hbase/WALs,/tmp/myblobfiles</value>
- </property>
- <property>
- <name>fs.azure</name>
- <value>org.apache.hadoop.fs.azure.NativeAzureFileSystem</value>
- </property>
- <property>
- <name>fs.azure.enable.append.support</name>
- <value>true</value>
- </property>
- </configuration>
-
-
-Copy Dependencies To Spark
-**************************
-
-Copy jar packages required by delta lake and microsoft azure to ./spark/jars directory:
-
-.. code-block:: shell
-
- wget https://repo1.maven.org/maven2/io/delta/delta-core_2.12/1.0.0/delta-core_2.12-1.0.0.jar -O ./spark/jars/delta-core_2.12-1.0.0.jar
- wget https://repo1.maven.org/maven2/com/microsoft/azure/azure-storage/8.6.6/azure-storage-8.6.6.jar -O ./spark/jars/azure-storage-8.6.6.jar
- wget https://repo1.maven.org/maven2/com/azure/azure-storage-blob/12.14.2/azure-storage-blob-12.14.2.jar -O ./spark/jars/azure-storage-blob-12.14.2.jar
- wget https://repo1.maven.org/maven2/org/apache/hadoop/hadoop-azure/3.1.1/hadoop-azure-3.1.1.jar -O ./spark/jars/hadoop-azure-3.1.1.jar
-
-Start Spark Standalone cluster
-******************************
-
-.. code-block:: shell
-
- ./spark/sbin/start-master.sh -h <YOUR_HOST> -p 7077 --webui-port 9090
- ./spark/sbin/start-worker.sh spark://<YOUR_HOST>:7077
-
-Test The connectivity Of Spark And Delta Lake
-*********************************************
-
-Start spark shell:
-
-.. code-block:: shell
-
- ./bin/spark-shell
-
-Generate a piece of random data and push them to delta lake:
-
-.. code-block:: scala
-
- scala> val data = spark.range(1000, 2000)
- scala> data.write.format("delta").mode("overwrite").save("wasbs://<YOUR_CONTAINER_NAME>@<YOUR_AZURE_ACCOUNT>.blob.core.windows.net/<YOUR_TABLE_NAME>")
-
-After this, you can check your data on azure web UI. For example, my container name is 1000 and table name is alexDemo20211127:
-
-.. image:: ../../imgs/deltalake/azure_spark_connection_test_storage.png
-
-You can also check data by reading back the data from delta lake:
-
-.. code-block:: scala
-
- scala> val df=spark.read.format("delta").load("wasbs://<YOUR_CONTAINER_NAME>@<YOUR_AZURE_ACCOUNT>.blob.core.windows.net/<YOUR_TABLE_NAME>")
- scala> df.show()
-
-If there is no problem with the above, it proves that spark has been built with delta lake.
-
-Deploy Kyuubi
--------------
-
-Install Kyuubi
-**************
-
-1.Download the latest version of kyuubi from `kyuubi download page`_.
-
-2.Unpackage
-
- tar -xzvf apache-kyuubi-|release|-bin.tgz
-
-Config Kyuubi
-*************
-
-Enter the ./kyuubi/conf directory
-
-.. code-block:: shell
-
- cp kyuubi-defaults.conf.template kyuubi-defaults.conf
- vim kyuubi-defaults.conf
-
-Add the following content:
-
-.. code-block:: properties
-
- spark.master spark://<YOUR_HOST>:7077
- kyuubi.authentication NONE
- kyuubi.frontend.bind.host <YOUR_HOST>
- kyuubi.frontend.bind.port 10009
- # If you use your own zk cluster, you need to configure your zk host port.
- # kyuubi.ha.addresses <YOUR_HOST>:2181
-
-Start Kyuubi
-************
-
-.. code-block:: shell
-
- bin/kyuubi start
-
-Check kyuubi log, in order to check kyuubi start status and find the jdbc connection url:
-
-.. code-block::
-
- 2021-11-26 17:49:50.235 INFO service.ThriftFrontendService: Starting and exposing JDBC connection at: jdbc:kyuubi://HOST:10009/
- 2021-11-26 17:49:50.265 INFO client.ServiceDiscovery: Created a /kyuubi/serviceUri=host:10009;version=1.3.1-incubating;sequence=0000000037 on ZooKeeper for KyuubiServer uri: host:10009
- 2021-11-26 17:49:50.267 INFO server.KyuubiServer: Service[KyuubiServer] is started.
-
-You can get the jdbc connection url by the log above.
-
-Test The Connectivity Of Kyuubi And Delta Lake
-**********************************************
-
-Use ``$KYUUBI_HOME/bin/kyuubi-beeline`` tool,
-
-.. code-block:: shell
-
- ./bin/kyuubi-beeline -u 'jdbc:kyuubi://<YOUR_HOST>:10009/'
-
-At the same time, you can also check whether the engine is running on the spark UI:
-
-.. image:: ../../imgs/deltalake/kyuubi_start_status_spark_UI.png
-
-When the engine started, it will expose a thrift endpoint and register itself into ZooKeeper, Kyuubi server can get the connection info from ZooKeeper and establish the connection to the engine.
-So, you can check the registration details in zookeeper path '/kyuubi_USER/anonymous'.
-
-Dealing Delta Lake Data By Using Kyuubi Examples
-------------------------------------------------
-
-Operate delta-lake data through SQL:
-
-Create Table
-************
-
-.. code-block:: sql
-
- -- Create or replace table with path
- CREATE OR REPLACE TABLE delta.`wasbs://1000@azure_account.blob.core.windows.net/alexDemo20211129` (
- date DATE,
- eventId STRING,
- eventType STRING,
- data STRING)
- USING DELTA
- PARTITIONED BY (date);
-
-Insert Data
-***********
-
-Append Mode
-^^^^^^^^^^^
-
-.. code-block:: sql
-
- INSERT INTO delta.`wasbs://1000@azure_account.blob.core.windows.net/alexDemo20211129` (
- date,
- eventId,
- eventType,
- data)
- VALUES
- (now(),'001','test','Hello World!'),
- (now(),'002','test','Hello World!'),
- (now(),'003','test','Hello World!');
-
-Result:
-
-.. code-block:: text
-
- +-------------+----------+------------+---------------+
- | date | eventId | eventType | data |
- +-------------+----------+------------+---------------+
- | 2021-11-29 | 001 | test | Hello World! |
- | 2021-11-29 | 003 | test | Hello World! |
- | 2021-11-29 | 002 | test | Hello World! |
- +-------------+----------+------------+---------------+
-
-Overwrite Mode
-^^^^^^^^^^^^^^
-
-.. code-block:: sql
-
- INSERT OVERWRITE TABLE delta.`wasbs://1000@azure_account.blob.core.windows.net/alexDemo20211129`(
- date,
- eventId,
- eventType,
- data)
- VALUES
- (now(),'001','test','hello kyuubi'),
- (now(),'002','test','hello kyuubi');
-
-Result:
-
-.. code-block:: text
-
- +-------------+----------+------------+---------------+
- | date | eventId | eventType | data |
- +-------------+----------+------------+---------------+
- | 2021-11-29 | 002 | test | hello kyuubi |
- | 2021-11-29 | 001 | test | hello kyuubi |
- +-------------+----------+------------+---------------+
-
-Delete Table Data
-*****************
-
-.. code-block:: sql
-
- DELETE FROM
- delta.`wasbs://1000@azure_account.blob.core.windows.net/alexDemo20211129`
- WHERE eventId = 002;
-
-Result:
-
-.. code-block:: text
-
- +-------------+----------+------------+---------------+
- | date | eventId | eventType | data |
- +-------------+----------+------------+---------------+
- | 2021-11-29 | 001 | test | hello kyuubi |
- +-------------+----------+------------+---------------+
-
-Update table data
-*****************
-
-.. code-block:: sql
-
- UPDATE
- delta.`wasbs://1000@azure_account.blob.core.windows.net/alexDemo20211129`
- SET data = 'This is a test for update data.'
- WHERE eventId = 001;
-
-Result:
-
-.. code-block:: text
-
- +-------------+----------+------------+----------------------------------+
- | date | eventId | eventType | data |
- +-------------+----------+------------+----------------------------------+
- | 2021-11-29 | 001 | test | This is a test for update data. |
- +-------------+----------+------------+----------------------------------+
-
-Select table data
-*****************
-
-.. code-block:: sql
-
- SELECT *
- FROM
- delta.`wasbs://1000@azure_account.blob.core.windows.net/alexDemo20211129`;
-
-Result:
-
-.. code-block:: text
-
- +-------------+----------+------------+----------------------------------+
- | date | eventId | eventType | data |
- +-------------+----------+------------+----------------------------------+
- | 2021-11-29 | 001 | test | This is a test for update data. |
- +-------------+----------+------------+----------------------------------+
-
-.. _Microsoft Azure official website: https://azure.microsoft.com/en-gb/
-.. _spark official website: https://spark.apache.org/downloads.html
-.. _kyuubi download page: https://kyuubi.apache.org/releases.html
diff --git a/docs/connector/spark/hudi.md b/docs/connector/spark/hudi.md
new file mode 100644
index 0000000000..0d0c10db45
--- /dev/null
+++ b/docs/connector/spark/hudi.md
@@ -0,0 +1,98 @@
+<!--
+- 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.
+-->
+
+# Hudi
+
+[Apache Hudi](https://hudi.apache.org/) (pronounced "hoodie") is the next generation streaming data lake platform.
+Apache Hudi brings core warehouse and database functionality directly to a data lake.
+
+```{tip}
+This article assumes that you have mastered the basic knowledge and operation of [Hudi](https://hudi.apache.org/).
+For the knowledge about Hudi not mentioned in this article, you can obtain it from its [Official Documentation](https://hudi.apache.org/docs/overview).
+```
+
+By using Kyuubi, we can run SQL queries towards Hudi which is more convenient, easy to understand,
+and easy to expand than directly using Spark to manipulate Hudi.
+
+## Hudi Integration
+
+To enable the integration of Kyuubi Spark SQL engine and Hudi through Spark DataSource V2 API, you need to:
+
+- Referencing the Hudi [dependencies](#dependencies)
+- Setting the Spark extension and catalog [configurations](#configurations)
+
+### Dependencies
+
+The **classpath** of Kyuubi Spark SQL engine with Hudi supported consists of:
+
+1. kyuubi-spark-sql-engine-{{ release }}_2.12.jar, the engine jar deployed with a Kyuubi distribution
+2. A copy of Spark distribution
+3. `hudi-spark<spark.version>-bundle_<scala.version>-<hudi.version>.jar` (example: `hudi-spark3.5-bundle_2.12:1.0.1.jar`), which can be found in the [Maven Central](https://mvnrepository.com/artifact/org.apache.hudi)
+
+In order to make the Hudi packages visible for the runtime classpath of engines, we can use one of these methods:
+
+1. Put the Hudi packages into `$SPARK_HOME/jars` directly
+2. Set `spark.jars=/path/to/hudi-spark-bundle`
+
+### Configurations
+
+To activate the functionality of Hudi, we can set the following configurations:
+
+```properties
+# Spark 3.2 to 3.5
+spark.serializer=org.apache.spark.serializer.KryoSerializer
+spark.kryo.registrator=org.apache.spark.HoodieSparkKryoRegistrar
+spark.sql.extensions=org.apache.spark.sql.hudi.HoodieSparkSessionExtension
+spark.sql.catalog.spark_catalog=org.apache.spark.sql.hudi.catalog.HoodieCatalog
+```
+
+## Hudi Operations
+
+Taking `Create Table` as an example:
+
+```sql
+CREATE TABLE hudi_cow_nonpcf_tbl (
+ uuid INT,
+ name STRING,
+ price DOUBLE
+) USING HUDI;
+```
+
+Taking `Query Data` as an example:
+
+```sql
+SELECT * FROM hudi_cow_nonpcf_tbl WHERE id < 20;
+```
+
+Taking `Insert Data` as an example:
+
+```sql
+INSERT INTO hudi_cow_nonpcf_tbl SELECT 1, 'a1', 20;
+```
+
+Taking `Update Data` as an example:
+
+```sql
+UPDATE hudi_cow_nonpcf_tbl SET name = 'foo', price = price * 2 WHERE id = 1;
+```
+
+Taking `Delete Data` as an example:
+
+```sql
+DELETE FROM hudi_cow_nonpcf_tbl WHERE uuid = 1;
+```
+
diff --git a/docs/connector/spark/hudi.rst b/docs/connector/spark/hudi.rst
deleted file mode 100644
index f9dc3f18f1..0000000000
--- a/docs/connector/spark/hudi.rst
+++ /dev/null
@@ -1,110 +0,0 @@
-.. 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.
-
-`Hudi`_
-========
-
-Apache Hudi (pronounced “hoodie”) is the next generation streaming data lake platform.
-Apache Hudi brings core warehouse and database functionality directly to a data lake.
-
-.. tip::
- This article assumes that you have mastered the basic knowledge and operation of `Hudi`_.
- For the knowledge about Hudi not mentioned in this article,
- you can obtain it from its `Official Documentation`_.
-
-By using Kyuubi, we can run SQL queries towards Hudi which is more convenient, easy to understand,
-and easy to expand than directly using Spark to manipulate Hudi.
-
-Hudi Integration
-----------------
-
-To enable the integration of Kyuubi Spark SQL engine and Hudi through
-Spark DataSource V2 API, you need to:
-
-- Referencing the Hudi :ref:`dependencies<spark-hudi-deps>`
-- Setting the Spark extension and catalog :ref:`configurations<spark-hudi-conf>`
-
-.. _spark-hudi-deps:
-
-Dependencies
-************
-
-The **classpath** of Kyuubi Spark SQL engine with Hudi supported consists of
-
-1. kyuubi-spark-sql-engine-\ |release|\ _2.12.jar, the engine jar deployed with a Kyuubi distribution
-2. a copy of Spark distribution
-3. hudi-spark<spark.version>-bundle_<scala.version>-<hudi.version>.jar (example: hudi-spark3.5-bundle_2.12:1.0.1.jar), which can be found in the `Maven Central`_
-
-In order to make the Hudi packages visible for the runtime classpath of engines, we can use one of these methods:
-
-1. Put the Hudi packages into ``$SPARK_HOME/jars`` directly
-2. Set ``spark.jars=/path/to/hudi-spark-bundle``
-
-.. _spark-hudi-conf:
-
-Configurations
-**************
-
-To activate functionality of Hudi, we can set the following configurations:
-
-.. code-block:: properties
-
- # Spark 3.2 to 3.5
- spark.serializer=org.apache.spark.serializer.KryoSerializer
- spark.kryo.registrator=org.apache.spark.HoodieSparkKryoRegistrar
- spark.sql.extensions=org.apache.spark.sql.hudi.HoodieSparkSessionExtension
- spark.sql.catalog.spark_catalog=org.apache.spark.sql.hudi.catalog.HoodieCatalog
-
-Hudi Operations
----------------
-
-Taking ``Create Table`` as a example,
-
-.. code-block:: sql
-
- CREATE TABLE hudi_cow_nonpcf_tbl (
- uuid INT,
- name STRING,
- price DOUBLE
- ) USING HUDI;
-
-Taking ``Query Data`` as a example,
-
-.. code-block:: sql
-
- SELECT * FROM hudi_cow_nonpcf_tbl WHERE id < 20;
-
-Taking ``Insert Data`` as a example,
-
-.. code-block:: sql
-
- INSERT INTO hudi_cow_nonpcf_tbl SELECT 1, 'a1', 20;
-
-
-Taking ``Update Data`` as a example,
-
-.. code-block:: sql
-
- UPDATE hudi_cow_nonpcf_tbl SET name = 'foo', price = price * 2 WHERE id = 1;
-
-Taking ``Delete Data`` as a example,
-
-.. code-block:: sql
-
- DELETE FROM hudi_cow_nonpcf_tbl WHERE uuid = 1;
-
-.. _Hudi: https://hudi.apache.org/
-.. _Official Documentation: https://hudi.apache.org/docs/overview
-.. _Maven Central: https://mvnrepository.com/artifact/org.apache.hudi
diff --git a/docs/connector/spark/iceberg.md b/docs/connector/spark/iceberg.md
new file mode 100644
index 0000000000..6292685841
--- /dev/null
+++ b/docs/connector/spark/iceberg.md
@@ -0,0 +1,115 @@
+<!--
+- 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.
+-->
+
+# Iceberg
+
+[Apache Iceberg](https://iceberg.apache.org/) is an open table format for huge analytic datasets.
+Iceberg adds tables to compute engines including Spark, Trino, PrestoDB, Flink, Hive and Impala
+using a high-performance table format that works just like a SQL table.
+
+```{tip}
+This article assumes that you have mastered the basic knowledge and operation of [Iceberg](https://iceberg.apache.org/).
+For the knowledge about Iceberg not mentioned in this article,
+you can obtain it from its [Official Documentation](https://iceberg.apache.org/docs/latest/).
+```
+
+By using kyuubi, we can run SQL queries towards Iceberg which is more
+convenient, easy to understand, and easy to expand than directly using
+spark to manipulate Iceberg.
+
+## Iceberg Integration
+
+To enable the integration of Kyuubi Spark SQL engine and Iceberg through Spark DataSource V2 API, you need to:
+
+- Referencing the Iceberg [dependencies](#dependencies)
+- Setting the Spark extension and catalog [configurations](#configurations)
+
+### Dependencies
+
+The **classpath** of Kyuubi Spark SQL engine with Iceberg supported consists of:
+
+1. kyuubi-spark-sql-engine-{{ release }}_2.12.jar, the engine jar deployed with a Kyuubi distribution
+2. A copy of Spark distribution
+3. `iceberg-spark-runtime-<spark.version>_<scala.version>-<iceberg.version>.jar` (example: `iceberg-spark-runtime-3.5_2.12-1.7.0.jar`), which can be found in the [Maven Central](https://mvnrepository.com/artifact/org.apache.iceberg)
+
+In order to make the Iceberg packages visible for the runtime classpath of engines, we can use one of these methods:
+
+1. Put the Iceberg packages into `$SPARK_HOME/jars` directly
+2. Set `spark.jars=/path/to/iceberg-spark-runtime`
+
+```{warning}
+Please mind the compatibility of different Iceberg and Spark versions, which
+can be confirmed on the page of [Iceberg multi engine support](https://iceberg.apache.org/multi-engine-support/).
+```
+
+### Configurations
+
+To activate the functionality of Iceberg, we can set the following configurations:
+
+```properties
+spark.sql.catalog.spark_catalog=org.apache.iceberg.spark.SparkCatalog
+spark.sql.catalog.spark_catalog.type=hive
+spark.sql.catalog.spark_catalog.uri=thrift://metastore-host:port
+spark.sql.extensions=org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions
+```
+
+## Iceberg Operations
+
+Taking `CREATE TABLE` as an example:
+
+```sql
+CREATE TABLE foo (
+ id bigint COMMENT 'unique id',
+ data string)
+USING iceberg;
+```
+
+Taking `SELECT` as an example:
+
+```sql
+SELECT * FROM foo;
+```
+
+Taking `INSERT` as an example:
+
+```sql
+INSERT INTO foo VALUES (1, 'a'), (2, 'b'), (3, 'c');
+```
+
+Taking `UPDATE` as an example, Spark 3.1 added support for UPDATE queries that update matching rows in tables.
+
+```sql
+UPDATE foo SET data = 'd', id = 4 WHERE id >= 3 and id < 4;
+```
+
+Taking `DELETE FROM` as an example, Spark 3 added support for DELETE FROM queries to remove data from tables.
+
+```sql
+DELETE FROM foo WHERE id >= 1 and id < 2;
+```
+
+Taking `MERGE INTO` as an example:
+
+```sql
+MERGE INTO target_table t
+USING source_table s
+ON t.id = s.id
+WHEN MATCHED AND s.opType = 'delete' THEN DELETE
+WHEN MATCHED AND s.opType = 'update' THEN UPDATE SET id = s.id, data = s.data
+WHEN NOT MATCHED AND s.opType = 'insert' THEN INSERT (id, data) VALUES (s.id, s.data);
+```
+
diff --git a/docs/connector/spark/iceberg.rst b/docs/connector/spark/iceberg.rst
deleted file mode 100644
index 2969d355b6..0000000000
--- a/docs/connector/spark/iceberg.rst
+++ /dev/null
@@ -1,124 +0,0 @@
-.. 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.
-
-`Iceberg`_
-==========
-
-Apache Iceberg is an open table format for huge analytic datasets.
-Iceberg adds tables to compute engines including Spark, Trino, PrestoDB, Flink, Hive and Impala
-using a high-performance table format that works just like a SQL table.
-
-.. tip::
- This article assumes that you have mastered the basic knowledge and operation of `Iceberg`_.
- For the knowledge about Iceberg not mentioned in this article,
- you can obtain it from its `Official Documentation`_.
-
-By using kyuubi, we can run SQL queries towards Iceberg which is more
-convenient, easy to understand, and easy to expand than directly using
-spark to manipulate Iceberg.
-
-Iceberg Integration
--------------------
-
-To enable the integration of Kyuubi Spark SQL engine and Iceberg through
-Spark DataSource V2 API, you need to:
-
-- Referencing the Iceberg :ref:`dependencies<spark-iceberg-deps>`
-- Setting the Spark extension and catalog :ref:`configurations<spark-iceberg-conf>`
-
-.. _spark-iceberg-deps:
-
-Dependencies
-************
-
-The **classpath** of Kyuubi Spark SQL engine with Iceberg supported consists of
-
-1. kyuubi-spark-sql-engine-\ |release|\ _2.12.jar, the engine jar deployed with a Kyuubi distribution
-2. a copy of Spark distribution
-3. iceberg-spark-runtime-<spark.version>_<scala.version>-<iceberg.version>.jar (example: iceberg-spark-runtime-3.5_2.12-1.7.0.jar), which can be found in the `Maven Central`_
-
-In order to make the Iceberg packages visible for the runtime classpath of engines, we can use one of these methods:
-
-1. Put the Iceberg packages into ``$SPARK_HOME/jars`` directly
-2. Set ``spark.jars=/path/to/iceberg-spark-runtime``
-
-.. warning::
- Please mind the compatibility of different Iceberg and Spark versions, which can be confirmed on the page of `Iceberg multi engine support`_.
-
-.. _spark-iceberg-conf:
-
-Configurations
-**************
-
-To activate functionality of Iceberg, we can set the following configurations:
-
-.. code-block:: properties
-
- spark.sql.catalog.spark_catalog=org.apache.iceberg.spark.SparkCatalog
- spark.sql.catalog.spark_catalog.type=hive
- spark.sql.catalog.spark_catalog.uri=thrift://metastore-host:port
- spark.sql.extensions=org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions
-
-Iceberg Operations
-------------------
-
-Taking ``CREATE TABLE`` as a example,
-
-.. code-block:: sql
-
- CREATE TABLE foo (
- id bigint COMMENT 'unique id',
- data string)
- USING iceberg;
-
-Taking ``SELECT`` as a example,
-
-.. code-block:: sql
-
- SELECT * FROM foo;
-
-Taking ``INSERT`` as a example,
-
-.. code-block:: sql
-
- INSERT INTO foo VALUES (1, 'a'), (2, 'b'), (3, 'c');
-
-Taking ``UPDATE`` as a example, Spark 3.1 added support for UPDATE queries that update matching rows in tables.
-
-.. code-block:: sql
-
- UPDATE foo SET data = 'd', id = 4 WHERE id >= 3 and id < 4;
-
-Taking ``DELETE FROM`` as a example, Spark 3 added support for DELETE FROM queries to remove data from tables.
-
-.. code-block:: sql
-
- DELETE FROM foo WHERE id >= 1 and id < 2;
-
-Taking ``MERGE INTO`` as a example,
-
-.. code-block:: sql
-
- MERGE INTO target_table t
- USING source_table s
- ON t.id = s.id
- WHEN MATCHED AND s.opType = 'delete' THEN DELETE
- WHEN MATCHED AND s.opType = 'update' THEN UPDATE SET id = s.id, data = s.data
- WHEN NOT MATCHED AND s.opType = 'insert' THEN INSERT (id, data) VALUES (s.id, s.data);
-
-.. _Iceberg: https://iceberg.apache.org/
-.. _Official Documentation: https://iceberg.apache.org/docs/latest/
-.. _Maven Central: https://mvnrepository.com/artifact/org.apache.iceberg
-.. _Iceberg multi engine support: https://iceberg.apache.org/multi-engine-support/
diff --git a/docs/connector/spark/index.md b/docs/connector/spark/index.md
new file mode 100644
index 0000000000..8d88d65422
--- /dev/null
+++ b/docs/connector/spark/index.md
@@ -0,0 +1,46 @@
+<!--
+- 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.
+-->
+
+# Connectors for Spark SQL Query Engine
+
+The Kyuubi Spark SQL Query Engine uses Spark DataSource APIs(V1/V2) to access
+data from different data sources.
+
+By default, it provides accessibility to hive warehouses with various file formats
+supported, such as parquet, orc, json, etc.
+
+Also,it can easily integrate with other third-party libraries, such as Hudi,
+Iceberg, Delta Lake, Kudu, Apache Paimon, HBase,Cassandra, etc.
+
+We also provide sample data sources like TDC-DS, TPC-H for testing and benchmarking
+purpose.
+
+```{toctree}
+:maxdepth: 2
+
+delta_lake
+delta_lake_with_azure_blob
+hudi
+iceberg
+kudu
+hive
+paimon
+tidb
+tpcds
+tpch
+```
+
diff --git a/docs/connector/spark/index.rst b/docs/connector/spark/index.rst
deleted file mode 100644
index 6527570801..0000000000
--- a/docs/connector/spark/index.rst
+++ /dev/null
@@ -1,43 +0,0 @@
-.. 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.
-
-Connectors for Spark SQL Query Engine
-=====================================
-
-The Kyuubi Spark SQL Query Engine uses Spark DataSource APIs(V1/V2) to access
-data from different data sources.
-
-By default, it provides accessibility to hive warehouses with various file formats
-supported, such as parquet, orc, json, etc.
-
-Also,it can easily integrate with other third-party libraries, such as Hudi,
-Iceberg, Delta Lake, Kudu, Apache Paimon, HBase,Cassandra, etc.
-
-We also provide sample data sources like TDC-DS, TPC-H for testing and benchmarking
-purpose.
-
-.. toctree::
- :maxdepth: 2
-
- delta_lake
- delta_lake_with_azure_blob
- hudi
- iceberg
- kudu
- hive
- paimon
- tidb
- tpcds
- tpch
diff --git a/docs/connector/spark/kudu.md b/docs/connector/spark/kudu.md
index a47b1f4880..5e1f37e3f0 100644
--- a/docs/connector/spark/kudu.md
+++ b/docs/connector/spark/kudu.md
@@ -186,3 +186,4 @@ No rows selected (0.611 seconds)
[https://kudu.apache.org/docs/developing.html#_kudu_integration_with_spark](https://kudu.apache.org/docs/developing.html#_kudu_integration_with_spark)
[https://github.com/apache/kyuubi](https://github.com/apache/kyuubi)
[https://spark.apache.org/docs/latest/sql-data-sources.html](https://spark.apache.org/docs/latest/sql-data-sources.html)
+
diff --git a/docs/connector/spark/paimon.md b/docs/connector/spark/paimon.md
new file mode 100644
index 0000000000..56e4450070
--- /dev/null
+++ b/docs/connector/spark/paimon.md
@@ -0,0 +1,97 @@
+<!--
+- 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.
+-->
+
+# Apache Paimon
+
+[Apache Paimon](https://paimon.apache.org/) is a streaming data lake platform that supports high-speed data ingestion, change data tracking and efficient real-time analytics.
+
+```{tip}
+This article assumes that you have mastered the basic knowledge and operation of [Apache Paimon](https://paimon.apache.org/).
+For the knowledge about Apache Paimon not mentioned in this article,
+you can obtain it from its [Official Documentation](https://paimon.apache.org/docs/master/).
+```
+
+By using kyuubi, we can run SQL queries towards Apache Paimon which is more
+convenient, easy to understand, and easy to expand than directly using
+spark to manipulate Apache Paimon.
+
+## Apache Paimon Integration
+
+To enable the integration of Kyuubi Spark SQL engine and Apache Paimon through Spark DataSource V2 API, you need to:
+
+- Referencing the Apache Paimon [dependencies](#dependencies)
+- Setting the Spark extension and catalog [configurations](#configurations)
+
+### Dependencies
+
+The **classpath** of Kyuubi Spark SQL engine with Apache Paimon consists of:
+
+1. kyuubi-spark-sql-engine-{{ release }}_2.12.jar, the engine jar deployed with a Kyuubi distribution
+2. A copy of Spark distribution
+3. `paimon-spark-<version>.jar` (example: `paimon-spark-3.5-0.8.1.jar`), which can be found in the [Apache Paimon Supported Engines Spark3](https://paimon.apache.org/docs/master/engines/spark3/)
+
+In order to make the Apache Paimon packages visible for the runtime classpath of engines, we can use one of these methods:
+
+1. Put the Apache Paimon packages into `$SPARK_HOME/jars` directly
+2. Set `spark.jars=/path/to/paimon-spark-<version>.jar`
+
+```{warning}
+Please mind the compatibility of different Apache Paimon and Spark versions,
+which can be confirmed on the page of [Apache Paimon multi engine support](https://paimon.apache.org/docs/master/engines/overview/).
+```
+
+### Configurations
+
+To activate functionality of Apache Paimon, we can set the following configurations:
+
+```properties
+spark.sql.catalog.paimon=org.apache.paimon.spark.SparkCatalog
+spark.sql.catalog.paimon.warehouse=file:/tmp/paimon
+```
+
+## Apache Paimon Operations
+
+Taking `CREATE NAMESPACE` as an example:
+
+```sql
+CREATE DATABASE paimon.default;
+USE paimon.default;
+```
+
+Taking `CREATE TABLE` as an example:
+
+```sql
+create table my_table (
+ k int,
+ v string
+) tblproperties (
+ 'primary-key' = 'k'
+);
+```
+
+Taking `SELECT` as an example:
+
+```sql
+SELECT * FROM my_table;
+```
+
+Taking `INSERT` as an example:
+
+```sql
+INSERT INTO my_table VALUES (1, 'Hi Again'), (3, 'Test');
+```
+
diff --git a/docs/connector/spark/paimon.rst b/docs/connector/spark/paimon.rst
deleted file mode 100644
index 4a57c1d00c..0000000000
--- a/docs/connector/spark/paimon.rst
+++ /dev/null
@@ -1,111 +0,0 @@
-.. 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.
-
-Apache Paimon
-=============
-
-`Apache Paimon`_ is a streaming data lake platform that supports high-speed data ingestion, change data tracking and efficient real-time analytics.
-
-.. tip::
- This article assumes that you have mastered the basic knowledge and operation of `Apache Paimon`_.
- For the knowledge about Apache Paimon not mentioned in this article,
- you can obtain it from its `Official Documentation`_.
-
-By using kyuubi, we can run SQL queries towards Apache Paimon which is more
-convenient, easy to understand, and easy to expand than directly using
-spark to manipulate Apache Paimon.
-
-Apache Paimon Integration
--------------------------
-
-To enable the integration of Kyuubi Spark SQL engine and Apache Paimon through
-Spark DataSource V2 API, you need to:
-
-- Referencing the Apache Paimon :ref:`dependencies<spark-paimon-deps>`
-- Setting the Spark extension and catalog :ref:`configurations<spark-paimon-conf>`
-
-.. _spark-paimon-deps:
-
-Dependencies
-************
-
-The **classpath** of Kyuubi Spark SQL engine with Apache Paimon consists of
-
-1. kyuubi-spark-sql-engine-\ |release|\ _2.12.jar, the engine jar deployed with a Kyuubi distribution
-2. a copy of Spark distribution
-3. paimon-spark-<version>.jar (example: paimon-spark-3.5-0.8.1.jar), which can be found in the `Apache Paimon Supported Engines Spark3`_
-
-In order to make the Apache Paimon packages visible for the runtime classpath of engines, we can use one of these methods:
-
-1. Put the Apache Paimon packages into ``$SPARK_HOME/jars`` directly
-2. Set ``spark.jars=/path/to/paimon-spark-<version>.jar``
-
-.. warning::
- Please mind the compatibility of different Apache Paimon and Spark versions, which can be confirmed on the page of `Apache Paimon multi engine support`_.
-
-.. _spark-paimon-conf:
-
-Configurations
-**************
-
-To activate functionality of Apache Paimon, we can set the following configurations:
-
-.. code-block:: properties
-
- spark.sql.catalog.paimon=org.apache.paimon.spark.SparkCatalog
- spark.sql.catalog.paimon.warehouse=file:/tmp/paimon
-
-Apache Paimon Operations
-------------------------
-
-
-Taking ``CREATE NAMESPACE`` as a example,
-
-.. code-block:: sql
-
- CREATE DATABASE paimon.default;
- USE paimon.default;
-
-Taking ``CREATE TABLE`` as a example,
-
-.. code-block:: sql
-
- create table my_table (
- k int,
- v string
- ) tblproperties (
- 'primary-key' = 'k'
- );
-
-Taking ``SELECT`` as a example,
-
-.. code-block:: sql
-
- SELECT * FROM my_table;
-
-
-Taking ``INSERT`` as a example,
-
-.. code-block:: sql
-
- INSERT INTO my_table VALUES (1, 'Hi Again'), (3, 'Test');
-
-
-
-
-.. _Apache Paimon: https://paimon.apache.org/
-.. _Official Documentation: https://paimon.apache.org/docs/master/
-.. _Apache Paimon Supported Engines Spark3: https://paimon.apache.org/docs/master/engines/spark3/
-.. _Apache Paimon multi engine support: https://paimon.apache.org/docs/master/engines/overview/
diff --git a/docs/connector/spark/tidb.md b/docs/connector/spark/tidb.md
new file mode 100644
index 0000000000..e56bd805f7
--- /dev/null
+++ b/docs/connector/spark/tidb.md
@@ -0,0 +1,95 @@
+<!--
+- 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.
+-->
+
+# TiDB
+
+[TiDB](https://docs.pingcap.com/tidb/stable/overview) is an open-source NewSQL database that supports Hybrid Transactional and Analytical Processing (HTAP) workloads.
+
+TiSpark is a thin layer built for running Apache Spark on top of TiDB/TiKV to answer complex OLAP
+queries. It enjoys the merits of both the Spark platform and the distributed clusters
+of TiKV while seamlessly integrated to TiDB to provide one-stop HTAP solutions for online
+transactions and analyses.
+
+```{tip}
+This article assumes that you have mastered the basic knowledge and operation of TiDB and TiSpark.
+For the knowledge not mentioned in this article, you can obtain it from TiDB [Official Documentation](https://docs.pingcap.com/tidb/stable/overview).
+```
+
+By using kyuubi, we can run SQL queries towards TiDB/TiKV which is more
+convenient, easy to understand, and easy to expand than directly using
+spark to manipulate TiDB/TiKV.
+
+## TiDB Integration
+
+To enable the integration of Kyuubi Spark SQL engine and TiDB through Spark DataSource V2 API, you need to:
+
+- Referencing the TiSpark [dependencies](#dependencies)
+- Setting the Spark extension and catalog [configurations](#configurations)
+
+### Dependencies
+
+The classpath of Kyuubi Spark SQL engine with TiDB supported consists of:
+
+1. kyuubi-spark-sql-engine-{{ release }}_2.12.jar, the engine jar deployed with a Kyuubi distribution
+2. A copy of Spark distribution
+3. `tispark-assembly-<spark.version>_<scala.version>-<tispark.version>.jar` (example: `tispark-assembly-3.2_2.12-3.0.1.jar`), which can be found in the [Maven Central](https://repo1.maven.org/maven2/com/pingcap/tispark/)
+
+In order to make the TiSpark packages visible for the runtime classpath of engines, we can use one of these methods:
+
+1. Put the TiSpark packages into `$SPARK_HOME/jars` directly
+2. Set `spark.jars=/path/to/tispark-assembly`
+
+```{warning}
+Please mind the compatibility of different TiDB, TiSpark and Spark versions,
+which can be confirmed on the page of [TiSpark Environment setup](https://docs.pingcap.com/tidb/stable/tispark-overview#environment-setup).
+```
+
+### Configurations
+
+To activate the functionality of TiSpark, we can set the following configurations:
+
+```properties
+spark.tispark.pd.addresses $pd_host:$pd_port
+spark.sql.extensions org.apache.spark.sql.TiExtensions
+spark.sql.catalog.tidb_catalog org.apache.spark.sql.catalyst.catalog.TiCatalog
+spark.sql.catalog.tidb_catalog.pd.addresses $pd_host:$pd_port
+```
+
+The `spark.tispark.pd.addresses` and `spark.sql.catalog.tidb_catalog.pd.addresses` configurations allow you to put in multiple PD servers.
+Specify the port number for each of them.
+
+For example, when you have multiple PD servers on `10.16.20.1,10.16.20.2,10.16.20.3` with the port `2379`, put it as `10.16.20.1:2379,10.16.20.2:2379,10.16.20.3:2379`.
+
+## TiDB Operations
+
+Taking `SELECT` as an example:
+
+```sql
+SELECT * FROM foo;
+```
+
+Taking `DELETE FROM` as an example, Spark 3 added support for DELETE FROM queries to remove data from tables.
+
+```sql
+DELETE FROM foo WHERE id >= 1 and id < 2;
+```
+
+```{note}
+As for now (TiSpark 3.0.1), TiSpark does not support `CREATE TABLE`,
+`INSERT INTO/OVERWRITE` operations through Apache Spark Datasource V2 and Catalog APIs.
+```
+
diff --git a/docs/connector/spark/tidb.rst b/docs/connector/spark/tidb.rst
deleted file mode 100644
index fa73134b5b..0000000000
--- a/docs/connector/spark/tidb.rst
+++ /dev/null
@@ -1,103 +0,0 @@
-.. 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.
-
-`TiDB`_
-==========
-
-TiDB is an open-source NewSQL database that supports Hybrid Transactional and Analytical Processing
-(HTAP) workloads.
-
-TiSpark is a thin layer built for running Apache Spark on top of TiDB/TiKV to answer complex OLAP
-queries. It enjoys the merits of both the Spark platform and the distributed clusters
-of TiKV while seamlessly integrated to TiDB to provide one-stop HTAP solutions for online
-transactions and analyses.
-
-.. tip::
- This article assumes that you have mastered the basic knowledge and operation of TiDB and TiSpark.
- For the knowledge not mentioned in this article, you can obtain it from TiDB `Official Documentation`_.
-
-By using kyuubi, we can run SQL queries towards TiDB/TiKV which is more
-convenient, easy to understand, and easy to expand than directly using
-spark to manipulate TiDB/TiKV.
-
-TiDB Integration
--------------------
-
-To enable the integration of Kyuubi Spark SQL engine and TiDB through
-Spark DataSource V2 API, you need to:
-
-- Referencing the TiSpark :ref:`dependencies<spark-tidb-deps>`
-- Setting the Spark extension and catalog :ref:`configurations<spark-tidb-conf>`
-
-.. _spark-tidb-deps:
-
-Dependencies
-************
-The classpath of Kyuubi Spark SQL engine with TiDB supported consists of
-
-1. kyuubi-spark-sql-engine-\ |release|\ _2.12.jar, the engine jar deployed with a Kyuubi distribution
-2. a copy of Spark distribution
-3. tispark-assembly-<spark.version>_<scala.version>-<tispark.version>.jar (example: tispark-assembly-3.2_2.12-3.0.1.jar), which can be found in the `Maven Central`_
-
-In order to make the TiSpark packages visible for the runtime classpath of engines, we can use one of these methods:
-
-1. Put the TiSpark packages into ``$SPARK_HOME/jars`` directly
-2. Set ``spark.jars=/path/to/tispark-assembly``
-
-.. warning::
- Please mind the compatibility of different TiDB, TiSpark and Spark versions, which can be confirmed on the page of `TiSpark Environment setup`_.
-
-.. _spark-tidb-conf:
-
-Configurations
-**************
-
-To activate functionality of TiSpark, we can set the following configurations:
-
-.. code-block:: properties
-
- spark.tispark.pd.addresses $pd_host:$pd_port
- spark.sql.extensions org.apache.spark.sql.TiExtensions
- spark.sql.catalog.tidb_catalog org.apache.spark.sql.catalyst.catalog.TiCatalog
- spark.sql.catalog.tidb_catalog.pd.addresses $pd_host:$pd_port
-
-The `spark.tispark.pd.addresses` and `spark.sql.catalog.tidb_catalog.pd.addresses` configurations
-allow you to put in multiple PD servers. Specify the port number for each of them.
-
-For example, when you have multiple PD servers on `10.16.20.1,10.16.20.2,10.16.20.3` with the port `2379`,
-put it as `10.16.20.1:2379,10.16.20.2:2379,10.16.20.3:2379`.
-
-TiDB Operations
-------------------
-
-Taking ``SELECT`` as a example,
-
-.. code-block:: sql
-
- SELECT * FROM foo;
-
-Taking ``DELETE FROM`` as a example, Spark 3 added support for DELETE FROM queries to remove data from tables.
-
-.. code-block:: sql
-
- DELETE FROM foo WHERE id >= 1 and id < 2;
-
-.. note::
- As for now (TiSpark 3.0.1), TiSpark does not support ``CREATE TABLE``, ``INSERT INTO/OVERWRITE`` operations
- through Apache Spark Datasource V2 and Catalog APIs.
-
-.. _Official Documentation: https://docs.pingcap.com/tidb/stable/overview
-.. _Maven Central: https://repo1.maven.org/maven2/com/pingcap/tispark/
-.. _TiSpark Environment setup: https://docs.pingcap.com/tidb/stable/tispark-overview#environment-setup
\ No newline at end of file
diff --git a/docs/connector/spark/tpcds.md b/docs/connector/spark/tpcds.md
new file mode 100644
index 0000000000..a45fc12d43
--- /dev/null
+++ b/docs/connector/spark/tpcds.md
@@ -0,0 +1,98 @@
+<!--
+- 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.
+-->
+
+# TPC-DS
+
+The TPC-DS is a decision support benchmark. It consists of a suite of business oriented ad-hoc queries and concurrent
+data modifications. The queries and the data populating the database have been chosen to have broad industry-wide
+relevance.
+
+```{tip}
+This article assumes that you have mastered the basic knowledge and operation of TPC-DS.
+For the knowledge about TPC-DS not mentioned in this article, you can obtain it from its [Official Documentation](https://www.tpc.org/tpcds/).
+```
+
+This connector can be used to test the capabilities and query syntax of Spark without configuring access to an external
+data source. When you query a TPC-DS table, the connector generates the data on the fly using a deterministic algorithm.
+
+Goto [Try Kyuubi](https://try.kyuubi.cloud/) to explore TPC-DS data instantly!
+
+## TPC-DS Integration
+
+To enable the integration of Kyuubi Spark SQL engine and TPC-DS through Spark DataSource V2 API, you need to:
+
+- Referencing the TPC-DS connector [dependencies](#dependencies)
+- Setting the Spark catalog [configurations](#configurations)
+
+### Dependencies
+
+The **classpath** of Kyuubi Spark SQL engine with TPC-DS supported consists of
+
+1. kyuubi-spark-sql-engine-{{ release }}_2.12.jar, the engine jar deployed with a Kyuubi distribution
+2. A copy of Spark distribution
+3. kyuubi-spark-connector-tpcds-{{ release }}_2.12.jar, which can be found in the [Maven Central](https://repo1.maven.org/maven2/org/apache/kyuubi/kyuubi-spark-connector-tpcds_2.12/)
+
+In order to make the TPC-DS connector package visible for the runtime classpath of engines, we can use one of these methods:
+
+1. Put the TPC-DS connector package into `$SPARK_HOME/jars` directly
+2. Set spark.jars=kyuubi-spark-connector-tpcds-{{ release }}_2.12.jar
+
+### Configurations
+
+To add TPC-DS tables as a catalog, we can set the following configurations in `$SPARK_HOME/conf/spark-defaults.conf`:
+
+```properties
+# (required) Register a catalog named `tpcds` for the spark engine.
+spark.sql.catalog.tpcds=org.apache.kyuubi.spark.connector.tpcds.TPCDSCatalog
+
+# (optional) Excluded database list from the catalog, all available databases are:
+# sf0, tiny, sf1, sf10, sf30, sf100, sf300, sf1000, sf3000, sf10000, sf30000, sf100000.
+spark.sql.catalog.tpcds.excludeDatabases=sf10000,sf30000
+
+# (optional) When true, use CHAR/VARCHAR, otherwise use STRING. It affects output of the table schema,
+# e.g. `SHOW CREATE TABLE <table>`, `DESC <table>`.
+spark.sql.catalog.tpcds.useAnsiStringType=false
+
+# (optional) TPCDS changed table schemas in v2.6.0, turn off this option to use old table schemas.
+# See detail at: https://www.tpc.org/tpc_documents_current_versions/pdf/tpc-ds_v3.2.0.pdf
+spark.sql.catalog.tpcds.useTableSchema_2_6=true
+
+# (optional) Maximum bytes per task, consider reducing it if you want higher parallelism.
+spark.sql.catalog.tpcds.read.maxPartitionBytes=128m
+```
+
+## TPC-DS Operations
+
+Listing databases under `tpcds` catalog.
+
+```sql
+SHOW DATABASES IN tpcds;
+```
+
+Listing tables under `tpcds.sf1` database.
+
+```sql
+SHOW TABLES IN tpcds.sf1;
+```
+
+Switch current database to `tpcds.sf1` and run a query against it.
+
+```sql
+USE tpcds.sf1;
+SELECT * FROM store;
+```
+
diff --git a/docs/connector/spark/tpcds.rst b/docs/connector/spark/tpcds.rst
deleted file mode 100644
index 24281bf05a..0000000000
--- a/docs/connector/spark/tpcds.rst
+++ /dev/null
@@ -1,108 +0,0 @@
-.. 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.
-
-TPC-DS
-======
-
-The TPC-DS is a decision support benchmark. It consists of a suite of business oriented ad-hoc queries and concurrent
-data modifications. The queries and the data populating the database have been chosen to have broad industry-wide
-relevance.
-
-.. tip::
- This article assumes that you have mastered the basic knowledge and operation of `TPC-DS`_.
- For the knowledge about TPC-DS not mentioned in this article, you can obtain it from its `Official Documentation`_.
-
-This connector can be used to test the capabilities and query syntax of Spark without configuring access to an external
-data source. When you query a TPC-DS table, the connector generates the data on the fly using a deterministic algorithm.
-
-Goto `Try Kyuubi`_ to explore TPC-DS data instantly!
-
-TPC-DS Integration
-------------------
-
-To enable the integration of Kyuubi Spark SQL engine and TPC-DS through
-Spark DataSource V2 API, you need to:
-
-- Referencing the TPC-DS connector :ref:`dependencies<spark-tpcds-deps>`
-- Setting the Spark catalog :ref:`configurations<spark-tpcds-conf>`
-
-.. _spark-tpcds-deps:
-
-Dependencies
-************
-
-The **classpath** of Kyuubi Spark SQL engine with TPC-DS supported consists of
-
-1. kyuubi-spark-sql-engine-\ |release|\ _2.12.jar, the engine jar deployed with a Kyuubi distribution
-2. a copy of Spark distribution
-3. kyuubi-spark-connector-tpcds-\ |release|\ _2.12.jar, which can be found in the `Maven Central`_
-
-In order to make the TPC-DS connector package visible for the runtime classpath of engines, we can use one of these methods:
-
-1. Put the TPC-DS connector package into ``$SPARK_HOME/jars`` directly
-2. Set spark.jars=kyuubi-spark-connector-tpcds-\ |release|\ _2.12.jar
-
-.. _spark-tpcds-conf:
-
-Configurations
-**************
-
-To add TPC-DS tables as a catalog, we can set the following configurations in ``$SPARK_HOME/conf/spark-defaults.conf``:
-
-.. code-block:: properties
-
- # (required) Register a catalog named `tpcds` for the spark engine.
- spark.sql.catalog.tpcds=org.apache.kyuubi.spark.connector.tpcds.TPCDSCatalog
-
- # (optional) Excluded database list from the catalog, all available databases are:
- # sf0, tiny, sf1, sf10, sf30, sf100, sf300, sf1000, sf3000, sf10000, sf30000, sf100000.
- spark.sql.catalog.tpcds.excludeDatabases=sf10000,sf30000
-
- # (optional) When true, use CHAR/VARCHAR, otherwise use STRING. It affects output of the table schema,
- # e.g. `SHOW CREATE TABLE <table>`, `DESC <table>`.
- spark.sql.catalog.tpcds.useAnsiStringType=false
-
- # (optional) TPCDS changed table schemas in v2.6.0, turn off this option to use old table schemas.
- # See detail at: https://www.tpc.org/tpc_documents_current_versions/pdf/tpc-ds_v3.2.0.pdf
- spark.sql.catalog.tpcds.useTableSchema_2_6=true
-
- # (optional) Maximum bytes per task, consider reducing it if you want higher parallelism.
- spark.sql.catalog.tpcds.read.maxPartitionBytes=128m
-
-TPC-DS Operations
------------------
-
-Listing databases under `tpcds` catalog.
-
-.. code-block:: sql
-
- SHOW DATABASES IN tpcds;
-
-Listing tables under `tpcds.sf1` database.
-
-.. code-block:: sql
-
- SHOW TABLES IN tpcds.sf1;
-
-Switch current database to `tpcds.sf1` and run a query against it.
-
-.. code-block:: sql
-
- USE tpcds.sf1;
- SELECT * FROM store;
-
-.. _Official Documentation: https://www.tpc.org/tpcds/
-.. _Try Kyuubi: https://try.kyuubi.cloud/
-.. _Maven Central: https://repo1.maven.org/maven2/org/apache/kyuubi/kyuubi-spark-connector-tpcds_2.12/
diff --git a/docs/connector/spark/tpch.md b/docs/connector/spark/tpch.md
new file mode 100644
index 0000000000..e187c9388d
--- /dev/null
+++ b/docs/connector/spark/tpch.md
@@ -0,0 +1,95 @@
+<!--
+- 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.
+-->
+
+# TPC-H
+
+The TPC-H is a decision support benchmark. It consists of a suite of business
+oriented ad-hoc queries and concurrent data modifications. The queries and the
+data populating the database have been chosen to have broad industry-wide
+relevance.
+
+```{tip}
+This article assumes that you have mastered the basic knowledge and operation of TPC-H.
+For the knowledge about TPC-H not mentioned in this article, you can obtain it from its [Official Documentation](https://www.tpc.org/tpch/).
+```
+
+This connector can be used to test the capabilities and query syntax of Spark without configuring access to an external data source.
+When you query a TPC-H table, the connector generates the data on the fly using a deterministic algorithm.
+
+Goto [Try Kyuubi](https://try.kyuubi.cloud/) to explore TPC-H data instantly!
+
+## TPC-H Integration
+
+To enable the integration of Kyuubi Spark SQL engine and TPC-H through Spark DataSource V2 API, you need to:
+
+- Referencing the TPC-H connector [dependencies](#dependencies)
+- Setting the Spark catalog [configurations](#configurations)
+
+### Dependencies
+
+The **classpath** of Kyuubi Spark SQL engine with TPC-H supported consists of:
+
+1. kyuubi-spark-sql-engine-{{ release }}_2.12.jar, the engine jar deployed with a Kyuubi distribution
+2. A copy of Spark distribution
+3. kyuubi-spark-connector-tpch-{{ release }}_2.12.jar, which can be found in the [Maven Central](https://repo1.maven.org/maven2/org/apache/kyuubi/kyuubi-spark-connector-tpch_2.12/)
+
+In order to make the TPC-H connector package visible for the runtime classpath of engines, we can use one of these methods:
+
+1. Put the TPC-H connector package into `$SPARK_HOME/jars` directly
+2. Set spark.jars=kyuubi-spark-connector-tpch-{{ release }}_2.12.jar
+
+### Configurations
+
+To add TPC-H tables as a catalog, we can set the following configurations in `$SPARK_HOME/conf/spark-defaults.conf`:
+
+```properties
+# (required) Register a catalog named `tpch` for the spark engine.
+spark.sql.catalog.tpch=org.apache.kyuubi.spark.connector.tpch.TPCHCatalog
+
+# (optional) Excluded database list from the catalog, all available databases are:
+# sf0, tiny, sf1, sf10, sf30, sf100, sf300, sf1000, sf3000, sf10000, sf30000, sf100000.
+spark.sql.catalog.tpch.excludeDatabases=sf10000,sf30000
+
+# (optional) When true, use CHAR/VARCHAR, otherwise use STRING. It affects output of the table schema,
+# e.g. `SHOW CREATE TABLE <table>`, `DESC <table>`.
+spark.sql.catalog.tpch.useAnsiStringType=false
+
+# (optional) Maximum bytes per task, consider reducing it if you want higher parallelism.
+spark.sql.catalog.tpch.read.maxPartitionBytes=128m
+```
+
+## TPC-H Operations
+
+Listing databases under `tpch` catalog:
+
+```sql
+SHOW DATABASES IN tpch;
+```
+
+Listing tables under `tpch.sf1` database:
+
+```sql
+SHOW TABLES IN tpch.sf1;
+```
+
+Switch current database to `tpch.sf1` and run a query against it:
+
+```sql
+USE tpch.sf1;
+SELECT * FROM orders;
+```
+
diff --git a/docs/connector/spark/tpch.rst b/docs/connector/spark/tpch.rst
deleted file mode 100644
index 100a221f05..0000000000
--- a/docs/connector/spark/tpch.rst
+++ /dev/null
@@ -1,104 +0,0 @@
-.. 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.
-
-TPC-H
-=====
-
-The TPC-H is a decision support benchmark. It consists of a suite of business oriented ad-hoc queries and concurrent
-data modifications. The queries and the data populating the database have been chosen to have broad industry-wide
-relevance.
-
-.. tip::
- This article assumes that you have mastered the basic knowledge and operation of `TPC-H`_.
- For the knowledge about TPC-H not mentioned in this article, you can obtain it from its `Official Documentation`_.
-
-This connector can be used to test the capabilities and query syntax of Spark without configuring access to an external
-data source. When you query a TPC-H table, the connector generates the data on the fly using a deterministic algorithm.
-
-Goto `Try Kyuubi`_ to explore TPC-H data instantly!
-
-TPC-H Integration
-------------------
-
-To enable the integration of Kyuubi Spark SQL engine and TPC-H through
-Spark DataSource V2 API, you need to:
-
-- Referencing the TPC-H connector :ref:`dependencies<spark-tpch-deps>`
-- Setting the Spark catalog :ref:`configurations<spark-tpch-conf>`
-
-.. _spark-tpch-deps:
-
-Dependencies
-************
-
-The **classpath** of Kyuubi Spark SQL engine with TPC-H supported consists of
-
-1. kyuubi-spark-sql-engine-\ |release|\ _2.12.jar, the engine jar deployed with a Kyuubi distribution
-2. a copy of Spark distribution
-3. kyuubi-spark-connector-tpch-\ |release|\ _2.12.jar, which can be found in the `Maven Central`_
-
-In order to make the TPC-H connector package visible for the runtime classpath of engines, we can use one of these methods:
-
-1. Put the TPC-H connector package into ``$SPARK_HOME/jars`` directly
-2. Set spark.jars=kyuubi-spark-connector-tpch-\ |release|\ _2.12.jar
-
-.. _spark-tpch-conf:
-
-Configurations
-**************
-
-To add TPC-H tables as a catalog, we can set the following configurations in ``$SPARK_HOME/conf/spark-defaults.conf``:
-
-.. code-block:: properties
-
- # (required) Register a catalog named `tpch` for the spark engine.
- spark.sql.catalog.tpch=org.apache.kyuubi.spark.connector.tpch.TPCHCatalog
-
- # (optional) Excluded database list from the catalog, all available databases are:
- # sf0, tiny, sf1, sf10, sf30, sf100, sf300, sf1000, sf3000, sf10000, sf30000, sf100000.
- spark.sql.catalog.tpch.excludeDatabases=sf10000,sf30000
-
- # (optional) When true, use CHAR/VARCHAR, otherwise use STRING. It affects output of the table schema,
- # e.g. `SHOW CREATE TABLE <table>`, `DESC <table>`.
- spark.sql.catalog.tpch.useAnsiStringType=false
-
- # (optional) Maximum bytes per task, consider reducing it if you want higher parallelism.
- spark.sql.catalog.tpch.read.maxPartitionBytes=128m
-
-TPC-H Operations
-----------------
-
-Listing databases under `tpch` catalog.
-
-.. code-block:: sql
-
- SHOW DATABASES IN tpch;
-
-Listing tables under `tpch.sf1` database.
-
-.. code-block:: sql
-
- SHOW TABLES IN tpch.sf1;
-
-Switch current database to `tpch.sf1` and run a query against it.
-
-.. code-block:: sql
-
- USE tpch.sf1;
- SELECT * FROM orders;
-
-.. _Official Documentation: https://www.tpc.org/tpch/
-.. _Try Kyuubi: https://try.kyuubi.cloud/
-.. _Maven Central: https://repo1.maven.org/maven2/org/apache/kyuubi/kyuubi-spark-connector-tpch_2.12/
\ No newline at end of file
diff --git a/docs/connector/trino/hudi.md b/docs/connector/trino/hudi.md
new file mode 100644
index 0000000000..7213691d24
--- /dev/null
+++ b/docs/connector/trino/hudi.md
@@ -0,0 +1,75 @@
+<!--
+- 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.
+-->
+
+# Hudi
+
+[Apache Hudi](https://hudi.apache.org/) (pronounced "hoodie") is the next-generation streaming data lake platform.
+Apache Hudi brings core warehouse and database functionality directly to a data lake.
+
+```{tip}
+This article assumes that you have mastered the basic knowledge and operation of [Hudi](https://hudi.apache.org/).
+For the knowledge about Hudi not mentioned in this article,
+you can obtain it from its [Official Documentation](https://hudi.apache.org/docs/overview).
+```
+
+By using Kyuubi, we can run SQL queries towards Hudi which is more convenient, easy to understand,
+and easy to expand than directly using Trino to manipulate Hudi.
+
+## Hudi Integration
+
+To enable the integration of Kyuubi Trino SQL engine and Hudi, you need to:
+
+- Setting the Trino extension and catalog [configurations](#configurations)
+
+### Configurations
+
+Catalogs are registered by creating a file of catalog properties in the `$TRINO_SERVER_HOME/etc/catalog` directory.
+For example, we can create a `$TRINO_SERVER_HOME/etc/catalog/hudi.properties` with the following contents to mount the Hudi connector as a Hudi catalog:
+
+```properties
+connector.name=hudi
+hive.metastore.uri=thrift://example.net:9083
+```
+
+Note: You need to replace `$TRINO_SERVER_HOME` above to your Trino server home path like `/opt/trino-server-406`.
+
+More configuration properties can be found in the [Hudi connector in Trino document](https://trino.io/docs/current/connector/hudi.html).
+
+```{tip}
+Trino version 398 or higher, it is recommended to use the Hudi connector.
+You don't need to install any dependencies in version 398 or higher.
+```
+
+## Hudi Operations
+
+The globally available and read operation statements are supported in Trino.
+These statements can be found in [Trino SQL Support](https://trino.io/docs/current/language/sql-support.html).
+Currently, Trino cannot write data to a Hudi table.
+A common scenario is to write data with Spark/Flink and read data with Trino.
+You can use the Kyuubi Trino SQL engine to query the table with the following SQL `SELECT` statement.
+
+Taking `Query Data` as an example:
+
+```sql
+USE example.example_schema;
+
+SELECT symbol, max(ts)
+FROM stock_ticks_cow
+GROUP BY symbol
+HAVING symbol = 'GOOG';
+```
+
diff --git a/docs/connector/trino/hudi.rst b/docs/connector/trino/hudi.rst
deleted file mode 100644
index 5c965a0b64..0000000000
--- a/docs/connector/trino/hudi.rst
+++ /dev/null
@@ -1,80 +0,0 @@
-.. 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.
-
-`Hudi`_
-========
-
-Apache Hudi (pronounced “hoodie”) is the next generation streaming data lake platform.
-Apache Hudi brings core warehouse and database functionality directly to a data lake.
-
-.. tip::
- This article assumes that you have mastered the basic knowledge and operation of `Hudi`_.
- For the knowledge about Hudi not mentioned in this article,
- you can obtain it from its `Official Documentation`_.
-
-By using Kyuubi, we can run SQL queries towards Hudi which is more convenient, easy to understand,
-and easy to expand than directly using Trino to manipulate Hudi.
-
-Hudi Integration
-----------------
-
-To enable the integration of Kyuubi Trino SQL engine and Hudi, you need to:
-
-- Setting the Trino extension and catalog :ref:`configurations<trino-hudi-conf>`
-
-.. _trino-hudi-conf:
-
-Configurations
-**************
-
-Catalogs are registered by creating a file of catalog properties in the `$TRINO_SERVER_HOME/etc/catalog` directory.
-For example, we can create a `$TRINO_SERVER_HOME/etc/catalog/hudi.properties` with the following contents to mount the Hudi connector as a Hudi catalog:
-
-.. code-block:: properties
-
- connector.name=hudi
- hive.metastore.uri=thrift://example.net:9083
-
-Note: You need to replace $TRINO_SERVER_HOME above to your Trino server home path like `/opt/trino-server-406`.
-
-More configuration properties can be found in the `Hudi connector in Trino document`_.
-
-.. tip::
- Trino version 398 or higher, it is recommended to use the Hudi connector.
- You don't need to install any dependencies in version 398 or higher.
-
-Hudi Operations
----------------
-The globally available and read operation statements are supported in Trino.
-These statements can be found in `Trino SQL Support`_.
-Currently, Trino cannot write data to a Hudi table.
-A common scenario is to write data with Spark/Flink and read data with Trino.
-You can use the Kyuubi Trino SQL engine to query the table with the following SQL ``SELECT`` statement.
-
-Taking ``Query Data`` as a example,
-
-.. code-block:: sql
-
- USE example.example_schema;
-
- SELECT symbol, max(ts)
- FROM stock_ticks_cow
- GROUP BY symbol
- HAVING symbol = 'GOOG';
-
-.. _Hudi: https://hudi.apache.org/
-.. _Official Documentation: https://hudi.apache.org/docs/overview
-.. _Hudi connector in Trino document: https://trino.io/docs/current/connector/hudi.html
-.. _Trino SQL Support: https://trino.io/docs/current/language/sql-support.html#
diff --git a/docs/connector/trino/iceberg.md b/docs/connector/trino/iceberg.md
new file mode 100644
index 0000000000..921938fc60
--- /dev/null
+++ b/docs/connector/trino/iceberg.md
@@ -0,0 +1,87 @@
+<!--
+- 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.
+-->
+
+# Iceberg
+
+[Apache Iceberg](https://iceberg.apache.org/) is an open table format for huge analytic datasets.
+Iceberg adds tables to compute engines including Spark, Trino, PrestoDB, Flink, Hive and Impala
+using a high-performance table format that works just like a SQL table.
+
+```{tip}
+This article assumes that you have mastered the basic knowledge and operation of [Iceberg](https://iceberg.apache.org/).
+For the knowledge about Iceberg not mentioned in this article,
+you can obtain it from its [Official Documentation](https://trino.io/docs/current/connector/iceberg.html).
+```
+
+By using kyuubi, we can run SQL queries towards Iceberg which is more
+convenient, easy to understand, and easy to expand than directly using
+Trino to manipulate Iceberg.
+
+## Iceberg Integration
+
+To enable the integration of Kyuubi Trino SQL engine and Iceberg through Catalog APIs, you need to:
+
+- Setting the Trino extension and catalog [configurations](#configurations)
+
+### Configurations
+
+To activate the functionality of Iceberg, we can set the following configurations:
+
+```properties
+connector.name=iceberg
+hive.metastore.uri=thrift://localhost:9083
+```
+
+## Iceberg Operations
+
+Taking `CREATE TABLE` as an example:
+
+```sql
+CREATE TABLE orders (
+ orderkey bigint,
+ orderstatus varchar,
+ totalprice double,
+ orderdate date
+) WITH (
+ format = 'ORC'
+);
+```
+
+Taking `SELECT` as an example:
+
+```sql
+SELECT * FROM new_orders;
+```
+
+Taking `INSERT` as an example:
+
+```sql
+INSERT INTO cities VALUES (1, 'San Francisco');
+```
+
+Taking `UPDATE` as an example:
+
+```sql
+UPDATE purchases SET status = 'OVERDUE' WHERE ship_date IS NULL;
+```
+
+Taking `DELETE FROM` as an example:
+
+```sql
+DELETE FROM lineitem WHERE shipmode = 'AIR';
+```
+
diff --git a/docs/connector/trino/iceberg.rst b/docs/connector/trino/iceberg.rst
deleted file mode 100644
index 6fc09bc951..0000000000
--- a/docs/connector/trino/iceberg.rst
+++ /dev/null
@@ -1,92 +0,0 @@
-.. 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.
-
-`Iceberg`_
-==========
-
-Apache Iceberg is an open table format for huge analytic datasets.
-Iceberg adds tables to compute engines including Spark, Trino, PrestoDB, Flink, Hive and Impala
-using a high-performance table format that works just like a SQL table.
-
-.. tip::
- This article assumes that you have mastered the basic knowledge and operation of `Iceberg`_.
- For the knowledge about Iceberg not mentioned in this article,
- you can obtain it from its `Official Documentation`_.
-
-By using kyuubi, we can run SQL queries towards Iceberg which is more
-convenient, easy to understand, and easy to expand than directly using
-Trino to manipulate Iceberg.
-
-Iceberg Integration
--------------------
-
-To enable the integration of kyuubi trino sql engine and Iceberg through Catalog APIs, you need to:
-
-- Setting the Trino extension and catalog :ref:`configurations`
-
-.. _configurations:
-
-Configurations
-**************
-
-To activate functionality of Iceberg, we can set the following configurations:
-
-.. code-block:: properties
-
- connector.name=iceberg
- hive.metastore.uri=thrift://localhost:9083
-
-Iceberg Operations
-------------------
-
-Taking ``CREATE TABLE`` as a example,
-
-.. code-block:: sql
-
- CREATE TABLE orders (
- orderkey bigint,
- orderstatus varchar,
- totalprice double,
- orderdate date
- ) WITH (
- format = 'ORC'
- );
-
-Taking ``SELECT`` as a example,
-
-.. code-block:: sql
-
- SELECT * FROM new_orders;
-
-Taking ``INSERT`` as a example,
-
-.. code-block:: sql
-
- INSERT INTO cities VALUES (1, 'San Francisco');
-
-Taking ``UPDATE`` as a example,
-
-.. code-block:: sql
-
- UPDATE purchases SET status = 'OVERDUE' WHERE ship_date IS NULL;
-
-Taking ``DELETE FROM`` as a example,
-
-.. code-block:: sql
-
- DELETE FROM lineitem WHERE shipmode = 'AIR';
-
-.. _Iceberg: https://iceberg.apache.org/
-.. _Official Documentation: https://trino.io/docs/current/connector/iceberg.html#
diff --git a/docs/connector/trino/index.md b/docs/connector/trino/index.md
new file mode 100644
index 0000000000..3444d0783a
--- /dev/null
+++ b/docs/connector/trino/index.md
@@ -0,0 +1,27 @@
+<!--
+- 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.
+-->
+
+# Connectors For Trino SQL Engine
+
+```{toctree}
+:maxdepth: 2
+
+paimon
+hudi
+iceberg
+```
+
diff --git a/docs/connector/trino/index.rst b/docs/connector/trino/index.rst
deleted file mode 100644
index 290966a5cf..0000000000
--- a/docs/connector/trino/index.rst
+++ /dev/null
@@ -1,24 +0,0 @@
-.. 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.
-
-Connectors For Trino SQL Engine
-=====================================
-
-.. toctree::
- :maxdepth: 2
-
- paimon
- hudi
- iceberg
\ No newline at end of file
diff --git a/docs/connector/trino/paimon.md b/docs/connector/trino/paimon.md
new file mode 100644
index 0000000000..bb8de13f84
--- /dev/null
+++ b/docs/connector/trino/paimon.md
@@ -0,0 +1,81 @@
+<!--
+- 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.
+-->
+
+# Apache Paimon
+
+[Apache Paimon](https://paimon.apache.org/) is a streaming data lake platform that supports high-speed data ingestion, change data tracking and efficient real-time analytics.
+
+```{tip}
+This article assumes that you have mastered the basic knowledge and operation of [Apache Paimon](https://paimon.apache.org/).
+For the knowledge about Apache Paimon not mentioned in this article,
+you can obtain it from its [Official Documentation](https://paimon.apache.org/docs/master/).
+```
+
+By using kyuubi, we can run SQL queries towards Apache Paimon which is more
+convenient, easy to understand, and easy to expand than directly using
+Trino to manipulate Apache Paimon.
+
+## Apache Paimon Integration
+
+To enable the integration of Kyuubi Trino SQL engine and Apache Paimon, you need to:
+
+- Referencing the Apache Paimon [dependencies](#dependencies)
+- Setting the Trino extension and catalog [configurations](#configurations)
+
+### Dependencies
+
+The **classpath** of Kyuubi Trino SQL engine with Apache Paimon supported consists of:
+
+1. kyuubi-trino-sql-engine-{{ release }}_2.12.jar, the engine jar deployed with a Kyuubi distribution
+2. A copy of Trino distribution
+3. `paimon-trino-<version>.jar` (example: `paimon-trino-0.2.jar`), which code can be found in the [Source Code](https://github.com/apache/paimon-trino)
+4. `flink-shaded-hadoop-2-uber-<version>.jar`, which code can be found in the [Pre-bundled Hadoop](https://flink.apache.org/downloads/#additional-components)
+
+In order to make the Apache Paimon packages visible for the runtime classpath of engines, you need to:
+
+1. Build the `paimon-trino-<version>.jar` by reference to [Apache Paimon Trino README](https://github.com/apache/paimon-trino)
+2. Put the `paimon-trino-<version>.jar` and `flink-shaded-hadoop-2-uber-<version>.jar` packages into `$TRINO_SERVER_HOME/plugin/tablestore` directly
+
+```{warning}
+Please mind the compatibility of different Apache Paimon and Trino versions,
+which can be confirmed on the page of [Apache Paimon multi engine support](https://paimon.apache.org/docs/master/engines/overview/).
+```
+
+### Configurations
+
+To activate the functionality of Apache Paimon, we can set the following configurations:
+
+Catalogs are registered by creating a catalog properties file in the `$TRINO_SERVER_HOME/etc/catalog` directory.
+For example, create `$TRINO_SERVER_HOME/etc/catalog/tablestore.properties` with the following contents to mount the tablestore connector as the tablestore catalog:
+
+```properties
+connector.name=tablestore
+warehouse=file:///tmp/warehouse
+```
+
+## Apache Paimon Operations
+
+Apache Paimon supports reading table store tables through Trino.
+A common scenario is to write data with Spark or Flink and read data with Trino.
+You can follow this document [Apache Paimon Engines Flink Quick Start](https://paimon.apache.org/docs/master/engines/flink/#quick-start) to
+write data to a table store table and then use Kyuubi Trino SQL engine to query
+the table with the following SQL `SELECT` statement.
+
+```sql
+SELECT * FROM tablestore.default.t1
+```
+
diff --git a/docs/connector/trino/paimon.rst b/docs/connector/trino/paimon.rst
deleted file mode 100644
index d5fa2e5e54..0000000000
--- a/docs/connector/trino/paimon.rst
+++ /dev/null
@@ -1,92 +0,0 @@
-.. 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.
-
-Apache Paimon
-=============
-
-`Apache Paimon`_ is a streaming data lake platform that supports high-speed data ingestion, change data tracking and efficient real-time analytics.
-
-.. tip::
- This article assumes that you have mastered the basic knowledge and operation of `Apache Paimon`_.
- For the knowledge about Apache Paimon not mentioned in this article,
- you can obtain it from its `Official Documentation`_.
-
-By using kyuubi, we can run SQL queries towards Apache Paimon which is more
-convenient, easy to understand, and easy to expand than directly using
-trino to manipulate Apache Paimon.
-
-Apache Paimon Integration
--------------------------
-
-To enable the integration of kyuubi trino sql engine and Apache Paimon, you need to:
-
-- Referencing the Apache Paimon :ref:`dependencies<trino-paimon-deps>`
-- Setting the trino extension and catalog :ref:`configurations<trino-paimon-conf>`
-
-.. _trino-paimon-deps:
-
-Dependencies
-************
-
-The **classpath** of kyuubi trino sql engine with Apache Paimon supported consists of
-
-1. kyuubi-trino-sql-engine-\ |release|\ _2.12.jar, the engine jar deployed with a Kyuubi distribution
-2. a copy of trino distribution
-3. paimon-trino-<version>.jar (example: paimon-trino-0.2.jar), which code can be found in the `Source Code`_
-4. flink-shaded-hadoop-2-uber-<version>.jar, which code can be found in the `Pre-bundled Hadoop`_
-
-In order to make the Apache Paimon packages visible for the runtime classpath of engines, you need to:
-
-1. Build the paimon-trino-<version>.jar by reference to `Apache Paimon Trino README`_
-2. Put the paimon-trino-<version>.jar and flink-shaded-hadoop-2-uber-<version>.jar packages into ``$TRINO_SERVER_HOME/plugin/tablestore`` directly
-
-.. warning::
- Please mind the compatibility of different Apache Paimon and Trino versions, which can be confirmed on the page of `Apache Paimon multi engine support`_.
-
-.. _trino-paimon-conf:
-
-Configurations
-**************
-
-To activate functionality of Apache Paimon, we can set the following configurations:
-
-Catalogs are registered by creating a catalog properties file in the $TRINO_SERVER_HOME/etc/catalog directory.
-For example, create $TRINO_SERVER_HOME/etc/catalog/tablestore.properties with the following contents to mount the tablestore connector as the tablestore catalog:
-
-.. code-block:: properties
-
- connector.name=tablestore
- warehouse=file:///tmp/warehouse
-
-Apache Paimon Operations
-------------------------
-
-Apache Paimon supports reading table store tables through Trino.
-A common scenario is to write data with Spark or Flink and read data with Trino.
-You can follow this document `Apache Paimon Engines Flink Quick Start`_ to write data to a table store table
-and then use kyuubi trino sql engine to query the table with the following SQL ``SELECT`` statement.
-
-
-.. code-block:: sql
-
- SELECT * FROM tablestore.default.t1
-
-.. _Apache Paimon: https://paimon.apache.org/
-.. _Apache Paimon multi engine support: https://paimon.apache.org/docs/master/engines/overview/
-.. _Apache Paimon Engines Flink Quick Start: https://paimon.apache.org/docs/master/engines/flink/#quick-start
-.. _Official Documentation: https://paimon.apache.org/docs/master/
-.. _Source Code: https://github.com/apache/paimon-trino
-.. _Pre-bundled Hadoop: https://flink.apache.org/downloads/#additional-components
-.. _Apache Paimon Trino README: https://github.com/apache/paimon-trino
diff --git a/docs/quick_start/quick_start_with_data_agent.md b/docs/quick_start/quick_start_with_data_agent.md
index f1677b67db..6b00c141ef 100644
--- a/docs/quick_start/quick_start_with_data_agent.md
+++ b/docs/quick_start/quick_start_with_data_agent.md
@@ -56,7 +56,7 @@ Open `http://<kyuubi-host>:10099/ui` in a browser (the port comes from `kyuubi.f
### 3. Try it with the TPC-H demo dataset
-Kyuubi ships a [Spark TPC-H connector](../connector/spark/tpch.rst) that generates the standard TPC-H decision-support dataset on the fly — no external database needed. Add the following to `$SPARK_HOME/conf/spark-defaults.conf` (or `$KYUUBI_HOME/conf/kyuubi-defaults.conf` with the `spark.` prefix):
+Kyuubi ships a [Spark TPC-H connector](../connector/spark/tpch.md) that generates the standard TPC-H decision-support dataset on the fly — no external database needed. Add the following to `$SPARK_HOME/conf/spark-defaults.conf` (or `$KYUUBI_HOME/conf/kyuubi-defaults.conf` with the `spark.` prefix):
```
spark.sql.catalog.tpch=org.apache.kyuubi.spark.connector.tpch.TPCHCatalog