This is an automated email from the ASF dual-hosted git repository. morningman pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/doris-website.git
The following commit(s) were added to refs/heads/master by this push: new 2f2dc693952 [fix](catalog) refine catalog doc (#1768) 2f2dc693952 is described below commit 2f2dc6939522248eae21005ba7d3cbb9ea021d3a Author: Mingyu Chen (Rayner) <morning...@163.com> AuthorDate: Mon Jan 13 12:26:27 2025 +0800 [fix](catalog) refine catalog doc (#1768) ## Versions - [x] dev - [ ] 3.0 - [ ] 2.1 - [ ] 2.0 ## Languages - [x] Chinese - [ ] English ## Docs Checklist - [ ] Checked by AI - [ ] Test Cases Built --- .../current/lakehouse/catalog-overview.md | 32 +++-- .../current/lakehouse/catalogs/hive-catalog.md | 142 +++++++++++++++++---- .../current/lakehouse/catalogs/iceberg-catalog.md | 101 ++++++++------- 3 files changed, 190 insertions(+), 85 deletions(-) diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/lakehouse/catalog-overview.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/lakehouse/catalog-overview.md index 92ab0ca2bb8..ab5cfc8e859 100644 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/lakehouse/catalog-overview.md +++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/lakehouse/catalog-overview.md @@ -30,7 +30,6 @@ under the License. Doris 中的数据目录分为两种: - | 类型 | 说明 | | ---------------- | -------------------------------------------------------- | | Internal Catalog | 内置数据目录,名称固定为 `internal`,用于存储 Doris 内表数据。不可创建、更改和删除。 | @@ -38,14 +37,13 @@ Doris 中的数据目录分为两种: 数据目录主要适用于以下三类场景,但不同的数据目录适用场景不同,详见对应数据目录的文档。 - | 场景 | 说明 | | ---- | ------------------------------------------- | | 查询加速 | 针对湖仓数据如 Hive、Iceberg、Paimon 等进行直接查询加速。 | | 数据集成 | ZeroETL 方案,直接访问不同数据源生成结果数据,或让数据在不同数据源中便捷流转。 | | 数据写回 | 通过 Doris 进行数据加工处理后,写回到外部数据源。 | -本文以 Iceberg Catalog 为例,重点介绍数据目录的基础操作。不同数据目录的详细介绍,请参阅对应的数据目录文档。 +本文以 [Iceberg Catalog](./catalogs/iceberg-catalog.md) 为例,重点介绍数据目录的基础操作。不同数据目录的详细介绍,请参阅对应的数据目录文档。 ## 创建数据目录 @@ -70,16 +68,16 @@ CREATE CATALOG iceberg_catalog PROPERTIES ( | 属性名 | 描述 | 示例 | | ----------------------- | ------------------------------------------------------------------------- | ------------------------------------- | -| include\_database\_list | 支持只同步指定的多个 Database,以 `,` 分隔。默认同步所有 Database。Database 名称是大小写敏感的。 | `'include_database_list' = 'db1,db2'` | -| exclude\_database\_list | 支持指定不需要同步的多个 Database,以 `,` 分割。默认不做任何过滤,同步所有 Database。Database 名称是大小写敏感的。 | `'exclude_database_list' = 'db1,db2'` | +| `include_database_list` | 支持只同步指定的多个 Database,以 `,` 分隔。默认同步所有 Database。Database 名称是大小写敏感的。当外部数据源有大量 Database,但仅需访问个别 Database 时,可以使用此参数,避免大量的元数据同步。 | `'include_database_list' = 'db1,db2'` | +| `exclude_database_list` | 支持指定不需要同步的多个 Database,以 `,` 分割。默认不做任何过滤,同步所有 Database。Database 名称是大小写敏感的。适用场景同上,反向排除不需要访问的数据库。如果冲突,`exclude` 优先级高于 `include` | `'exclude_database_list' = 'db1,db2'` | ### 列类型映射 -用户创建数据目录后,Doris 会自动同步数据目录的数据库、表和 Schema。不同数据目录的列类型映射规则请参与对应的数据目录文档。 +用户创建数据目录后,Doris 会自动同步数据目录的数据库、表和 Schema。不同数据目录的列类型映射规则请参阅对应的数据目录文档。 对于当前无法映射到 Doris 列类型的外部数据类型,如 `UNION`, `INTERVAL` 等,Doris 会将列类型映射为 `UNSUPPORTED` 类型。对于 `UNSUPPORTED` 类型的查询,示例如下: -假设同步后的表 schema 为: +假设同步后的表 Schema 为: ```text k1 INT, @@ -119,7 +117,7 @@ mysql> SHOW CATALOGS; Doris 提供 `SWITCH` 语句用于将连接会话上下文切换到对应的数据目录。类似使用 `USE` 语句切换数据库。 -切换到数据目录后,可以 `USE` 语句继续切换到指定的数据库。或通过 `SHOW DATABASES` 查看当前数据目录下的数据库。 +切换到数据目录后,可以使用 `USE` 语句继续切换到指定的数据库。或通过 `SHOW DATABASES` 查看当前数据目录下的数据库。 ```sql SWITCH iceberg_catalog; @@ -134,7 +132,7 @@ SHOW DATABASES; | iceberg_db | +--------------------+ -USE iceberg_tpcds100; +USE iceberg_db; ``` 也可以通过 `USE` 语句,直接使用全限定名 `catalog_name.database_name` 切换到指定数据目录下的指定数据库: @@ -168,7 +166,7 @@ GROUP BY id ORDER BY id; Doris 支持跨数据目录的关联查询。 -这里我们再创建一个 MySQL Catalog: +这里我们再创建一个 [MySQL Catalog](./catalogs/jdbc-mysql-catalog.md): ```sql CREATE CATALOG mysql_catalog properties( @@ -213,9 +211,9 @@ Doris 支持通过 `INSERT` 语句直接将数据写回到外部数据源。具 * [ Hive Catalog ](./catalogs/hive-catalog.md) -* [ Iceberg Catalog(PreviewV2)](./catalogs/iceberg-catalog.md) +* [ Iceberg Catalog](./catalogs/iceberg-catalog.md) -* [ JDBC Catalog 概述](./catalogs/jdbc-catalog-overview.md) +* [ JDBC Catalog](./catalogs/jdbc-catalog-overview.md) ## 刷新数据目录 @@ -232,17 +230,22 @@ REFRESH DATABASE catalog_name.db_name; REFRESH TABLE catalog_name.db_name.table_name; ``` -关于元数据缓存的详细介绍,请参阅:[元数据缓存](./datacache.md) +Doris 也支持关闭元数据缓存,以便能够实时访问到最新的元数据。 + +关于元数据缓存的详细介绍和配置,请参阅:[元数据缓存](./meta-cache.md) ## 修改数据目录 可以通过 `ALTER CATALOG` 对数据目录的属性或名称进行修改: ```sql +-- Rename a catalog ALTER CATALOG iceberg_catalog RENAME iceberg_catalog2; +-- Modify properties of a catalog ALTER CATALOG iceberg_catalog SET PROPERTIES ('key1' = 'value1' [, 'key' = 'value2']); +-- Modify the comment of a catalog ALTER CATALOG iceberg_catalog MODIFY COMMENT 'my iceberg catalog'; ``` @@ -251,7 +254,7 @@ ALTER CATALOG iceberg_catalog MODIFY COMMENT 'my iceberg catalog'; 可以通过 `DROP CATALOG` 删除指定的外部数据目录。 ```sql -DROP CATALOG [IF NOT EXISTS] iceberg_catalog; +DROP CATALOG [IF EXISTS] iceberg_catalog; ``` 从 Doris 中删除外部数据目录,并不会删除实际的数据,只是删除了 Doris 中存储的数据目录映射关系。 @@ -259,3 +262,4 @@ DROP CATALOG [IF NOT EXISTS] iceberg_catalog; ## 权限管理 外部数据目录中库表的权限管理和内表一致。具体可参阅 [认证和鉴权](../admin-manual/auth/authentication-and-authorization.md) 文档。 + diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/lakehouse/catalogs/hive-catalog.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/lakehouse/catalogs/hive-catalog.md index b32e72a995d..8ee11401447 100644 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/lakehouse/catalogs/hive-catalog.md +++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/lakehouse/catalogs/hive-catalog.md @@ -52,7 +52,7 @@ CREATE CATALOG [IF NOT EXISTS] catalog_name PROPERTIES ( ); ``` -* \<hive\_metastore\_type> +* `<hive_metastore_type>` 指定 Hive Metastore 的类型。 @@ -62,21 +62,21 @@ CREATE CATALOG [IF NOT EXISTS] catalog_name PROPERTIES ( * `dlf`:使用 Hive Metastore 兼容接口访问阿里云 DLF 元数据服务。 -* \<fs\_defaultfs> +* `<fs_defaultfs>` 当需要通过 Doris 写入数据到这个 Hive Catalog 中表时,此参数为必选项。示例: - `'fs.defaultFS' = 'hdfs://172.21.16.47:4007'` + `'fs.defaultFS' = 'hdfs://namenode:port'` -* {MetaStoreProperties} +* `{MetaStoreProperties}` MetaStoreProperties 部分用于填写 Metastore 元数据服务连接和认证信息。具体可参阅【支持的元数据服务】部分。 -* {StorageProperties} +* `{StorageProperties}` StorageProperties 部分用于填写存储系统相关的连接和认证信息。具体可参阅【支持的存储系统】部分。 -* {CommonProperties} +* `{CommonProperties}` CommonProperties 部分用于填写通用属性。请参阅[ 数据目录概述 ](../catalog-overview.md)中【通用属性】部分。 @@ -96,8 +96,6 @@ CREATE CATALOG [IF NOT EXISTS] catalog_name PROPERTIES ( ### 支持的存储系统 -> 如果需要通过 Doris 创建 Hive 表或写入数据,需要在 Catalog 属性中显式增加 `fs.defaultFS` 属性。如果创建 Catalog 仅用于查询,则该参数可以省略。 - * [ HDFS](../storages/hdfs.md) * [ AWS S3](../storages/s3.md) @@ -112,6 +110,8 @@ CREATE CATALOG [IF NOT EXISTS] catalog_name PROPERTIES ( * [ MINIO](../storages/minio.md) +> 如果需要通过 Doris 创建 Hive 表或写入数据,需要在 Catalog 属性中显式增加 `fs.defaultFS` 属性。如果创建 Catalog 仅用于查询,则该参数可以省略。 + ### 支持的数据格式 * Hive @@ -120,7 +120,7 @@ CREATE CATALOG [IF NOT EXISTS] catalog_name PROPERTIES ( * [ ORC](../file-formats/orc.md) - * [ Text/CSV/Json](../file-formats/text.md) + * [ Text/CSV/JSON](../file-formats/text.md) * Hudi @@ -233,23 +233,47 @@ SELECT * FROM hive_tbl LIMIT 10; SELECT * FROM hive_ctl.hive_db.hive_tbl LIMIT 10; ``` -### 查询 Hive 分区(Querying Hive Partitions) +### 查询 Hive 分区 可以通过下面两种方式查询 Hive 分区信息。 -* `SHOW PARTITIONS FROM hive_table` +* `SHOW PARTITIONS FROM [catalog.][db.]hive_table` 该语句可以列出指定 Hive 表的所有分区以及分区值信息。 + ```sql + SHOW PARTITIONS FROM hive_table; + + +--------------------------------+ + | Partition | + +--------------------------------+ + | pt1=2024-10-10/pt2=beijing | + | pt1=2024-10-10/pt2=shanghai | + | pt1=2024-10-11/pt2=beijing | + | pt1=2024-10-11/pt2=shanghai | + | pt1=2024-10-12/pt2=nanjing | + +--------------------------------+ + ``` + * 使用 `table$partitions` 元数据表 - 自 2.1.7 和 3.0.3 版本开始,用户可以通过 `table$partitions` 元数据表查询 Hive 分区信息。`table$partitions` 本质上是一个关系表,所以可以使用在任意 SELECT 语句中。 + 自 2.1.7 和 3.0.3 版本开始,用户可以通过 `table$partitions` 元数据表查询 Hive 分区信息。`table$partitions` 本质上是一个关系表,每个分区列为一列,所以可以使用在任意 SELECT 语句中。 ```sql SELECT * FROM hive_table$partitions; + + +------------+-------------+ + | pt1 | pt2 | + +------------+-------------+ + | 2024-10-10 | beijing | + | 2024-10-10 | shanghai | + | 2024-10-12 | nanjing | + | 2024-10-11 | beijing | + | 2024-10-11 | shanghai | + +------------+-------------+ ``` -### 查询 Hive 事务表(Hive Transactional Table) +### 查询 Hive 事务表 Hive Transactional 表是 Hive 中支持 ACID 语义的表。详情可见 [Hive Transactions](https://cwiki.apache.org/confluence/display/Hive/Hive+Transactions)。 @@ -280,7 +304,7 @@ Hive Transactional 表是 Hive 中支持 ACID 语义的表。详情可见 [Hive ### INSERT INTO -INSERT 操作会数据以追加的方式写入到目标表中。当前不支持指定分区写入。 +INSERT 操作会将数据以追加的方式写入到目标表中。当前不支持指定分区写入。 ```sql INSERT INTO hive_tbl values (val1, val2, val3, val4); @@ -383,7 +407,7 @@ DROP DATABASE [IF EXISTS] hive_ctl.hive_db; ``` :::caution -注意 对于 Hive Database,必须先删除这个 Database 下的所有表后,才能删除 Database,否则会报错。这个操作会同步删除 Hive 中对应的 Database。 +对于 Hive Database,必须先删除这个 Database 下的所有表后,才能删除 Database,否则会报错。这个操作会同步删除 Hive 中对应的 Database。 ::: ### 创建和删除表 @@ -392,17 +416,89 @@ DROP DATABASE [IF EXISTS] hive_ctl.hive_db; Doris 支持在 Hive 中创建分区或非分区表。 + ```sql + -- Create unpartitioned hive table + CREATE TABLE unpartitioned_table ( + `col1` BOOLEAN COMMENT 'col1', + `col2` INT COMMENT 'col2', + `col3` BIGINT COMMENT 'col3', + `col4` CHAR(10) COMMENT 'col4', + `col5` FLOAT COMMENT 'col5', + `col6` DOUBLE COMMENT 'col6', + `col7` DECIMAL(9,4) COMMENT 'col7', + `col8` VARCHAR(11) COMMENT 'col8', + `col9` STRING COMMENT 'col9' + ) ENGINE=hive + PROPERTIES ( + 'file_format'='parquet' + ); + + -- Create partitioned hive table + -- The partition columns must be in table's column definition list + CREATE TABLE partition_table ( + `col1` BOOLEAN COMMENT 'col1', + `col2` INT COMMENT 'col2', + `col3` BIGINT COMMENT 'col3', + `col4` DECIMAL(2,1) COMMENT 'col4', + `pt1` VARCHAR COMMENT 'pt1', + `pt2` VARCHAR COMMENT 'pt2' + ) ENGINE=hive + PARTITION BY LIST (pt1, pt2) () + PROPERTIES ( + 'file_format'='orc', + 'compression'='zlib' + ); + + -- Create text format table(Since 2.1.7 & 3.0.3) + CREATE TABLE text_table ( + `id` INT, + `name` STRING + ) PROPERTIES ( + 'file_format'='text', + 'compression'='gzip', + 'field.delim'='\t', + 'line.delim'='\n', + 'collection.delim'=';', + 'mapkey.delim'=':', + 'serialization.null.format'='\\N', + 'escape.delim'='\\' + ); + ``` + + 创建后,可以通过 `SHOW CREATE TABLE` 命令查看 Hive 的建表语句。 + + 注意,不同于 Hive 中的建表语句。在 Doris 中创建 Hive 分区表时,分区列也必须写到 Table 的 Schema 中。同时,分区列必须在所有 Schema 的最后,且顺序保持一致。 + + :::tip + 对于某些默认开启 ACID 事务特性的 Hive 集群,使用 Doris 建表后,表属性 `transactional` 会为 `true`。而 Doris 只支持部分 Hive 事务表的特性,因此可能会导致 Doris 创建的 Hive,Doris 本身无法读取的问题。因此,需要在建表的属性中,显式增加:`"transactional" = "false"`,来创建非事务的 Hive 表: + + ``` + CREATE TABLE non_acid_table( + `col1` BOOLEAN COMMENT 'col1', + `col2` INT COMMENT 'col2', + `col3` BIGINT COMMENT 'col3' + ) ENGINE=hive + PROPERTIES ( + 'transactional'='false', + ); + ``` + ::: + * 删除 可以通过 `DROP TABLE` 语句删除一个 Hive 表。当前删除表后,会同时删除数据,包括分区数据。 * 列类型映射 - 参考【列类型映射】部分 + 参考【列类型映射】部分。需要额外注意一下限制: + + - 列类型只能为默认的 Nullable,不支持 `NOT NULL`。 + - Hive 3.0 支持设置默认值。如果需要设置默认值,则需要在 Catalog 属性中显示的添加 `"hive.version" = "3.0.0"`。 + - 插入数据后,如果类型不能够兼容,例如 `'abc'` 插入到数值类型,则会转为 `null` 值插入。 * 分区 - Hive 中的分区类型对应 Apache Doris 中的 List 分区。因此,在 Apache Doris 中 创建 Hive 分区表,需使用 List 分区的建表语句,但无需显式的枚举各个分区。在写入数据时,Apache Doris 会根据数据的值,自动创建对应的 Hive 分区。支持创建单列或多列分区表。 + Hive 中的分区类型对应 Doris 中的 List 分区。因此,在 Doris 中 创建 Hive 分区表,需使用 List 分区的建表语句,但无需显式的枚举各个分区。在写入数据时,Doris 会根据数据的值,自动创建对应的 Hive 分区。支持创建单列或多列分区表。 * 文件格式 @@ -442,7 +538,7 @@ DROP DATABASE [IF EXISTS] hive_ctl.hive_db; ## 订阅 Hive Metastore 事件 -通过让 FE 节点定时读取 HMS 的 Notification Event 来感知 Hive 表元数据的变更情况,目前支持处理如下 Event: +通过让 FE 节点定时读取 HMS 的 Notification Event 来感知 Hive 表元数据的实时变更情况,以提高元数据的时效性。目前支持处理如下 Event: | 事件 | 事件行为和对应的动作 | | --------------- | ------------------------------------------------------------------------- | @@ -456,11 +552,13 @@ DROP DATABASE [IF EXISTS] hive_ctl.hive_db; | DROP PARTITION | 在对应表缓存的分区列表里删除分区,并失效该分区的缓存。 | | ALTER PARTITION | 如果是重命名,先删除旧名字的分区,再用新名字创建分区,否则失效该分区的缓存。 | -> 当导入数据导致文件变更,分区表会走 ALTER PARTITION Event 逻辑,不分区表会走 ALTER TABLE Event 逻辑。 -> -> 如果绕过 HMS 直接操作文件系统的话,HMS 不会生成对应事件,Doris 因此也无法感知。 +:::tip +1. 当导入数据导致文件变更,分区表会触发 `ALTER PARTITION` 时间,非分区表会触发 `ALTER TABLE` 事件。 + +2. 如果绕过 HMS 直接操作文件系统的话,HMS 不会生成对应事件,因此 Doris 也无法感知元数据变化。 +::: -该特性在 `fe.conf` 中有如下参数: +该特性在 `fe.conf` 中有如下相关参数: 1. `enable_hms_events_incremental_sync`: 是否开启元数据自动增量同步功能,默认关闭。 diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/lakehouse/catalogs/iceberg-catalog.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/lakehouse/catalogs/iceberg-catalog.md index 5e0f2af06af..0e34031bae4 100644 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/lakehouse/catalogs/iceberg-catalog.md +++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/lakehouse/catalogs/iceberg-catalog.md @@ -26,7 +26,9 @@ under the License. Doris 支持通过多种元数据服务访问 Iceberg 表数据。除支持数据读取外,Doris 也支持对 Iceberg 表进行写入操作。 -> 注:用户可以通过 Hive Catalog 访问使用 Hive Metastore 作为元数据的 Iceberg 表。但依然推荐直接使用 Iceberg Catalog 以避免一些兼容性问题。 +:::tip +用户可以通过 Hive Catalog 访问使用 Hive Metastore 作为元数据的 Iceberg 表。但依然推荐直接使用 Iceberg Catalog 以避免一些兼容性问题。 +::: ## 适用场景 @@ -51,7 +53,7 @@ CREATE CATALOG [IF NOT EXISTS] catalog_name PROPERTIES ( ); ``` -* \<iceberg\_catalog\_type> +* `<iceberg_catalog_type>` Iceberg Catalog 的类型,支持以下几种: @@ -65,21 +67,21 @@ CREATE CATALOG [IF NOT EXISTS] catalog_name PROPERTIES ( * `dlf`:使用阿里云 DLF 作为元数据服务。 -* \<warehouse> +* `<warehouse>` - Iceberg 的仓库路径。当 `<iceberg_catalog_type>` 为 \`hadoop\` 时,需指定这个参数。 + Iceberg 的仓库路径。当 `<iceberg_catalog_type>` 为 `hadoop` 时,需指定这个参数。 - `warehouse` 的路径必须指向 `Database` 路径的上一级。如你的表路径是:`s3://bucket/path/to/db1/table1`,那么 `warehouse` 应该是:`s3://bucket/path/to/` + `warehouse` 的路径必须指向 `Database` 路径的上一级。如您的表路径是:`s3://bucket/path/to/db1/table1`,那么 `warehouse` 应该是:`s3://bucket/path/to/` -* MetaStoreProperties +* `{MetaStoreProperties}` MetaStoreProperties 部分用于填写 Metastore 元数据服务连接和认证信息。具体可参阅【支持的元数据服务】部分。 -* StorageProperties +* `{StorageProperties}` StorageProperties 部分用于填写存储系统相关的连接和认证信息。具体可参阅【支持的存储系统】部分。 -* CommonProperties +* `{CommonProperties}` CommonProperties 部分用于填写通用属性。请参阅[ 数据目录概述 ](../catalog-overview.md)中【通用属性】部分。 @@ -222,8 +224,6 @@ CREATE CATALOG iceberg_dlf PROPERTIES ( ### Iceberg on Rest -该方式需要预先提供 REST 服务,用户需实现获取 Iceberg 元数据的 REST 接口。 - ```sql CREATE CATALOG iceberg_rest PROPERTIES ( 'type' = 'iceberg', @@ -232,6 +232,20 @@ CREATE CATALOG iceberg_rest PROPERTIES ( ); ``` +### Iceberg on Rest with MINIO + +```sql +CREATE CATALOG iceberg_minio PROPERTIES ( + 'type' = 'iceberg', + 'iceberg.catalog.type' = 'rest', + 'uri' = 'http://172.21.0.1:8181', + 's3.access_key' = 'ak', + 's3.secret_key' = 'sk', + 's3.endpoint' = 'http://10.0.0.1:9000', + 's3.region' = 'us-east-1' +); +``` + ### Iceberg on Google Dataproc Metastore ```sql @@ -247,20 +261,6 @@ CREATE CATALOG iceberg_gdm PROPERTIES ( ); ``` -### Iceberg on Rest with MINIO - -```sql -CREATE CATALOG iceberg_minio PROPERTIES ( - 'type' = 'iceberg', - 'iceberg.catalog.type' = 'rest', - 'uri' = 'http://10.0.0.1:8181', - 's3.access_key' = 'ak', - 's3.secret_key' = 'sk', - 's3.endpoint' = 'http://10.0.0.1:9000', - 's3.region' = 'us-east-1' -); -``` - ## 查询操作 ### 基础查询 @@ -271,7 +271,7 @@ SWITCH iceberg; USE iceberg_db; SELECT * FROM iceberg_tbl LIMIT 10; --- 2. use hive database directly +-- 2. use iceberg database directly USE iceberg.iceberg_db; SELECT * FROM iceberg_tbl LIMIT 10; @@ -291,7 +291,22 @@ SELECT * FROM iceberg.iceberg_db.iceberg_tbl LIMIT 10; SELECT * FROM iceberg_meta( 'table' = 'iceberg_ctl.iceberg_db.iceberg_tbl', 'query_type' = 'snapshots' -); +)\G + +*************************** 1. row *************************** + committed_at: 2024-11-28 11:07:29 + snapshot_id: 8903826400153112036 + parent_id: -1 + operation: append +manifest_list: oss://path/to/metadata/snap-8903826400153112036-1-3835e66d-9a18-4cb0-b9b0-9ec80527ad8d.avro + summary: {"added-data-files":"2","added-records":"3","added-files-size":"2742","changed-partition-count":"2","total-records":"3","total-files-size":"2742","total-data-files":"2","total-delete-files":"0","total-position-deletes":"0","total-equality-deletes":"0"} +*************************** 2. row *************************** + committed_at: 2024-11-28 11:10:11 + snapshot_id: 6099853805930794326 + parent_id: 8903826400153112036 + operation: append +manifest_list: oss://path/to/metadata/snap-6099853805930794326-1-dd46a1bd-219b-4fb0-bb46-ac441d8b3105.avro + summary: {"added-data-files":"1","added-records":"1","added-files-size":"1367","changed-partition-count":"1","total-records":"4","total-files-size":"4109","total-data-files":"3","total-delete-files":"0","total-position-deletes":"0","total-equality-deletes":"0"} ``` 可以使用 `FOR TIME AS OF` 和 `FOR VERSION AS OF` 语句,根据快照 ID 或者快照产生的时间读取历史版本的数据。示例如下: @@ -304,15 +319,9 @@ SELECT * FROM iceberg_tbl FOR VERSION AS OF 868895038966572; ## 写入操作 -> 使用前,请先设置: -> -> set global enable\_nereids\_planner = true; -> -> set global enable\_fallback\_to\_original\_planner = false; - ### INSERT INTO -INSERT 操作会数据以追加的方式写入到目标表中。 +INSERT 操作会将数据以追加的方式写入到目标表中。 例如: @@ -357,13 +366,7 @@ PROPERTIES ( AS SELECT col1,pt1 as col2,pt2 as pt1 FROM test_ctas.part_ctas_src WHERE col1>0; ``` -注: - -在 HDFS 上的 Iceberg 表数据会写入到最终目录,提交 Iceberg 元数据进行管理。 - -写入的数据文件名称格式为:`<query-id>_<uuid>-<index>.<compress-type>.<file-type>` - -### 相关参数(Configurations) +### 相关参数 * BE @@ -386,7 +389,7 @@ SWITCH iceberg; CREATE DATABASE [IF NOT EXISTS] iceberg_db; ``` -也可以使用全限定名创建,或指定 location(目前只有 hms 类型的 catalog 支持指定 location),如: +也可以使用全限定名创建,或指定 location(目前只有 hms 类型的 Catalog 支持指定 location),如: ```sql CREATE DATABASE [IF NOT EXISTS] iceberg.iceberg_db; @@ -412,15 +415,15 @@ mysql> SHOW CREATE DATABASE iceberg_db; DROP DATABASE [IF EXISTS] iceberg.iceberg_db; ``` -:::caution 注意 +:::caution 对于 Iceberg Database,必须先删除这个 Database 下的所有表后,才能删除 Database,否则会报错 ::: -### 创建和删除表(Table Management) +### 创建和删除表 * 创建 - Apache Doris 支持在 Iceberg 中创建分区或非分区表。 + Doris 支持在 Iceberg 中创建分区或非分区表。 例如: @@ -464,25 +467,25 @@ DROP DATABASE [IF EXISTS] iceberg.iceberg_db; ); ``` - 创建后,可以通过 `SHOW CREATE TABLE` 命令查看 Iceberg 的建表语句。关于分区表的分区函数,可以参阅后面的\[分区]小节。 + 创建后,可以通过 `SHOW CREATE TABLE` 命令查看 Iceberg 的建表语句。关于分区表的分区函数,可以参阅后面的【分区】小节。 * 删除 - 可以通过 `DROP TABLE` 语句删除一个 iceberg 表。当前删除表后,会同时删除数据,包括分区数据。 + 可以通过 `DROP TABLE` 语句删除一个 Iceberg 表。当前删除表后,会同时删除数据,包括分区数据。 例如: ```sql - drop table iceberg_tb; + DROP TABLE [IF EXISTS] iceberg_tbl; ``` * 列类型映射 - 参考【列类型映射】部分 + 参考【列类型映射】部分。 * 分区 - Iceberg 中的分区类型对应 Apache Doris 中的 List 分区。因此,在 Apache Doris 中 创建 Iceberg 分区表,需使用 List 分区的建表语句,但无需显式的枚举各个分区。在写入数据时,Apache Doris 会根据数据的值,自动创建对应的 Iceberg 分区。 + Iceberg 中的分区类型对应 Doris 中的 List 分区。因此,在 Doris 中 创建 Iceberg 分区表,需使用 List 分区的建表语句,但无需显式的枚举各个分区。在写入数据时,Doris 会根据数据的值,自动创建对应的 Iceberg 分区。 * 支持创建单列或多列分区表。 --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org For additional commands, e-mail: commits-h...@doris.apache.org