This is an automated email from the ASF dual-hosted git repository. yiguolei pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/master by this push: new d2a8b3fc1e [doc](multi-catalog) fix some format and typo (#15988) d2a8b3fc1e is described below commit d2a8b3fc1e6515c32b4d86d2de342fc6b9176d1a Author: Mingyu Chen <morning...@163.com> AuthorDate: Tue Jan 17 20:22:17 2023 +0800 [doc](multi-catalog) fix some format and typo (#15988) --- .../en/docs/lakehouse/{external-table => }/file.md | 0 docs/sidebars.json | 4 +- .../docs/lakehouse/{external-table => }/file.md | 4 +- docs/zh-CN/docs/lakehouse/multi-catalog/dlf.md | 2 +- docs/zh-CN/docs/lakehouse/multi-catalog/iceberg.md | 2 +- docs/zh-CN/docs/lakehouse/multi-catalog/jdbc.md | 239 +++++++++++---------- .../docs/lakehouse/multi-catalog/multi-catalog.md | 106 ++------- 7 files changed, 144 insertions(+), 213 deletions(-) diff --git a/docs/en/docs/lakehouse/external-table/file.md b/docs/en/docs/lakehouse/file.md similarity index 100% rename from docs/en/docs/lakehouse/external-table/file.md rename to docs/en/docs/lakehouse/file.md diff --git a/docs/sidebars.json b/docs/sidebars.json index a769a4eef4..fed0b1f368 100644 --- a/docs/sidebars.json +++ b/docs/sidebars.json @@ -199,13 +199,13 @@ "type": "category", "label": "External Table", "items": [ - "lakehouse/external-table/file", "lakehouse/external-table/es", "lakehouse/external-table/jdbc", "lakehouse/external-table/odbc", "lakehouse/external-table/hive" ] - } + }, + "lakehouse/file" ] }, { diff --git a/docs/zh-CN/docs/lakehouse/external-table/file.md b/docs/zh-CN/docs/lakehouse/file.md similarity index 96% rename from docs/zh-CN/docs/lakehouse/external-table/file.md rename to docs/zh-CN/docs/lakehouse/file.md index d6860f11d3..701d914de7 100644 --- a/docs/zh-CN/docs/lakehouse/external-table/file.md +++ b/docs/zh-CN/docs/lakehouse/file.md @@ -37,8 +37,8 @@ under the License. 更多使用方式可参阅 Table Value Function 文档: -* [S3](../../sql-manual/sql-functions/table-functions/s3):支持 S3 兼容的对象存储上的文件分析。 -* [HDFS](../../sql-manual/sql-functions/table-functions/hdfs.md):支持 HDFS 上的文件分析。 +* [S3](../sql-manual/sql-functions/table-functions/s3):支持 S3 兼容的对象存储上的文件分析。 +* [HDFS](../sql-manual/sql-functions/table-functions/hdfs):支持 HDFS 上的文件分析。 这里我们通过 S3 Table Value Function 举例说明如何进行文件分析。 diff --git a/docs/zh-CN/docs/lakehouse/multi-catalog/dlf.md b/docs/zh-CN/docs/lakehouse/multi-catalog/dlf.md index 4079227559..296963e5ea 100644 --- a/docs/zh-CN/docs/lakehouse/multi-catalog/dlf.md +++ b/docs/zh-CN/docs/lakehouse/multi-catalog/dlf.md @@ -97,6 +97,6 @@ under the License. 之后,可以像正常的 Hive MetaStore 一样,访问 DLF 下的元数据。 - 同 Hive Catalog 已经,支持访问 DLF 中的 Hive/Iceberg/Hudi 的元数据信息。 + 同 Hive Catalog 一样,支持访问 DLF 中的 Hive/Iceberg/Hudi 的元数据信息。 diff --git a/docs/zh-CN/docs/lakehouse/multi-catalog/iceberg.md b/docs/zh-CN/docs/lakehouse/multi-catalog/iceberg.md index 758e7e8408..d27a176e96 100644 --- a/docs/zh-CN/docs/lakehouse/multi-catalog/iceberg.md +++ b/docs/zh-CN/docs/lakehouse/multi-catalog/iceberg.md @@ -31,7 +31,7 @@ under the License. 1. 支持 Iceberg V1/V2 表格式。 2. V2 格式仅支持 Position Delete 方式,不支持 Equality Delete。 -3. 目前仅支持 Hive Metastore 类型的 Catalog。所以使用方式和 Hive Catalog 基本一致。后续版本将支持其他类型的 Catalog。 +3. 目前仅支持 Hive Metastore 类型的 Catalog。所以使用方式和 Hive Catalog 基本一致。 ## 创建 Catalog diff --git a/docs/zh-CN/docs/lakehouse/multi-catalog/jdbc.md b/docs/zh-CN/docs/lakehouse/multi-catalog/jdbc.md index 78bc6dc08f..7abaf0a369 100644 --- a/docs/zh-CN/docs/lakehouse/multi-catalog/jdbc.md +++ b/docs/zh-CN/docs/lakehouse/multi-catalog/jdbc.md @@ -29,6 +29,8 @@ under the License. JDBC Catalog 通过标准 JDBC 协议,连接其他数据源。 +连接后,Doris 会自动同步数据源下的 Database 和 Table 的元数据,以便快速访问这些外部数据。 + ## 使用限制 1. 支持 MySQL、PostgreSQL、Oracle、Clickhouse @@ -37,74 +39,74 @@ JDBC Catalog 通过标准 JDBC 协议,连接其他数据源。 1. MySQL - ```sql - CREATE CATALOG jdbc_mysql PROPERTIES ( - "type"="jdbc", - "user"="root", - "password"="123456", - "jdbc_url" = "jdbc:mysql://127.0.0.1:3306/demo", - "driver_url" = "mysql-connector-java-5.1.47.jar", - "driver_class" = "com.mysql.jdbc.Driver" - ) - ``` - + ```sql + CREATE CATALOG jdbc_mysql PROPERTIES ( + "type"="jdbc", + "user"="root", + "password"="123456", + "jdbc_url" = "jdbc:mysql://127.0.0.1:3306/demo", + "driver_url" = "mysql-connector-java-5.1.47.jar", + "driver_class" = "com.mysql.jdbc.Driver" + ) + ``` + 2. PostgreSQL - ```sql - CREATE CATALOG jdbc_postgresql PROPERTIES ( - "type"="jdbc", - "user"="root", - "password"="123456", - "jdbc_url" = "jdbc:postgresql://127.0.0.1:5449/demo", - "driver_url" = "postgresql-42.5.1.jar", - "driver_class" = "org.postgresql.Driver" - ); - ``` - - 映射 PostgreSQL 时,Doris 的一个 Database 对应于 PostgreSQL 中指定 Catalog(如示例中 `jdbc_url` 参数中 "demo")下的一个 Schema。而 Doris 的 Database 下的 Table 则对应于 PostgreSQL 中,Schema 下的 Tables。即映射关系如下: - - |Doris | PostgreSQL | - |---|---| - | Catalog | Database | - | Database | Schema | - | Table | Tablet | + ```sql + CREATE CATALOG jdbc_postgresql PROPERTIES ( + "type"="jdbc", + "user"="root", + "password"="123456", + "jdbc_url" = "jdbc:postgresql://127.0.0.1:5449/demo", + "driver_url" = "postgresql-42.5.1.jar", + "driver_class" = "org.postgresql.Driver" + ); + ``` + + 映射 PostgreSQL 时,Doris 的一个 Database 对应于 PostgreSQL 中指定 Catalog(如示例中 `jdbc_url` 参数中 "demo")下的一个 Schema。而 Doris 的 Database 下的 Table 则对应于 PostgreSQL 中,Schema 下的 Tables。即映射关系如下: + + |Doris | PostgreSQL | + |---|---| + | Catalog | Database | + | Database | Schema | + | Table | Table | 3. Oracle - ```sql - CREATE RESOURCE jdbc_oracle PROPERTIES ( - "type"="jdbc", - "user"="root", - "password"="123456", - "jdbc_url" = "jdbc:oracle:thin:@127.0.0.1:1521:helowin", - "driver_url" = "ojdbc6.jar", - "driver_class" = "oracle.jdbc.driver.OracleDriver" - ); - ``` - - 映射 Oracle 时,Doris 的一个 Database 对应于 Oracle 中的一个 User(如示例中 `jdbc_url` 参数中 "helowin")。而 Doris 的 Database 下的 Table 则对应于 Oracle 中,该 User 下的有权限访问的 Table。即映射关系如下: - - |Doris | PostgreSQL | - |---|---| - | Catalog | Database | - | Database | User | - | Table | Table | - - + ```sql + CREATE CATALOG jdbc_oracle PROPERTIES ( + "type"="jdbc", + "user"="root", + "password"="123456", + "jdbc_url" = "jdbc:oracle:thin:@127.0.0.1:1521:helowin", + "driver_url" = "ojdbc6.jar", + "driver_class" = "oracle.jdbc.driver.OracleDriver" + ); + ``` + + 映射 Oracle 时,Doris 的一个 Database 对应于 Oracle 中的一个 User(如示例中 `jdbc_url` 参数中 "helowin")。而 Doris 的 Database 下的 Table 则对应于 Oracle 中,该 User 下的有权限访问的 Table。即映射关系如下: + + |Doris | PostgreSQL | + |---|---| + | Catalog | Database | + | Database | User | + | Table | Table | + + 4. Clickhouse - ```sql - CREATE RESOURCE jdbc_clickhouse PROPERTIES ( - "type"="jdbc", - "user"="root", - "password"="123456", - "jdbc_url" = "jdbc:clickhouse://127.0.0.1:8123/demo", - "driver_url" = "clickhouse-jdbc-0.3.2-patch11-all.jar", - "driver_class" = "com.clickhouse.jdbc.ClickHouseDriver" - ); - ``` - + ```sql + CREATE CATALOG jdbc_clickhouse PROPERTIES ( + "type"="jdbc", + "user"="root", + "password"="123456", + "jdbc_url" = "jdbc:clickhouse://127.0.0.1:8123/demo", + "driver_url" = "clickhouse-jdbc-0.3.2-patch11-all.jar", + "driver_class" = "com.clickhouse.jdbc.ClickHouseDriver" + ); + ``` + ### 参数说明 参数 | 是否必须 | 默认值 | 说明 @@ -216,77 +218,76 @@ JDBC Catalog 通过标准 JDBC 协议,连接其他数据源。 1. 除了 MySQL,Oracle,PostgreSQL,SQLServer,ClickHouse 是否能够支持更多的数据库 - 目前Doris只适配了 MySQL,Oracle,PostgreSQL,SQLServer,ClickHouse. 关于其他的数据库的适配工作正在规划之中,原则上来说任何支持JDBC访问的数据库都能通过JDBC外表来访问。如果您有访问其他外表的需求,欢迎修改代码并贡献给Doris。 + 目前Doris只适配了 MySQL,Oracle,PostgreSQL,SQLServer,ClickHouse. 关于其他的数据库的适配工作正在规划之中,原则上来说任何支持JDBC访问的数据库都能通过JDBC外表来访问。如果您有访问其他外表的需求,欢迎修改代码并贡献给Doris。 2. 读写 MySQL外表的emoji表情出现乱码 Doris进行jdbc外表连接时,由于mysql之中默认的utf8编码为utf8mb3,无法表示需要4字节编码的emoji表情。这里需要在建立mysql外表时设置对应列的编码为utf8mb4,设置服务器编码为utf8mb4,JDBC Url中的characterEncoding不配置.(该属性不支持utf8mb4,配置了非utf8mb4将导致无法写入表情,因此要留空,不配置) - 可全局修改配置项 - - ``` - 修改mysql目录下的my.ini文件(linux系统为etc目录下的my.cnf文件) - [client] - default-character-set=utf8mb4 - - [mysql] - 设置mysql默认字符集 - default-character-set=utf8mb4 - - [mysqld] - 设置mysql字符集服务器 - character-set-server=utf8mb4 - collation-server=utf8mb4_unicode_ci - init_connect='SET NAMES utf8mb4 - - 修改对应表与列的类型 - ALTER TABLE table_name MODIFY colum_name VARCHAR(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; - ALTER TABLE table_name CHARSET=utf8mb4; - SET NAMES utf8mb4 - - ``` + 可全局修改配置项 + + ``` + 修改mysql目录下的my.ini文件(linux系统为etc目录下的my.cnf文件) + [client] + default-character-set=utf8mb4 + + [mysql] + 设置mysql默认字符集 + default-character-set=utf8mb4 + + [mysqld] + 设置mysql字符集服务器 + character-set-server=utf8mb4 + collation-server=utf8mb4_unicode_ci + init_connect='SET NAMES utf8mb4 + + 修改对应表与列的类型 + ALTER TABLE table_name MODIFY colum_name VARCHAR(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; + ALTER TABLE table_name CHARSET=utf8mb4; + SET NAMES utf8mb4 + ``` 3. 读 MySQL 外表时,DateTime="0000:00:00 00:00:00"异常报错: "CAUSED BY: DataReadException: Zero date value prohibited" - 这是因为JDBC中对于该非法的DateTime默认处理为抛出异常,可以通过参数 `zeroDateTimeBehavior`控制该行为。 - - 可选参数为: `EXCEPTION`,`CONVERT_TO_NULL`,`ROUND`, 分别为:异常报错,转为NULL值,转为 "0001-01-01 00:00:00"; - - 可在url中添加: `"jdbc_url"="jdbc:mysql://IP:PORT/doris_test?zeroDateTimeBehavior=convertToNull"` + 这是因为JDBC中对于该非法的DateTime默认处理为抛出异常,可以通过参数 `zeroDateTimeBehavior`控制该行为。 + + 可选参数为: `EXCEPTION`,`CONVERT_TO_NULL`,`ROUND`, 分别为:异常报错,转为NULL值,转为 "0001-01-01 00:00:00"; + + 可在url中添加: `"jdbc_url"="jdbc:mysql://IP:PORT/doris_test?zeroDateTimeBehavior=convertToNull"` 4. 读取 MySQL 外表或其他外表时,出现加载类失败 - - 如以下异常: - - ``` - failed to load driver class com.mysql.jdbc.driver in either of hikariconfig class loader - ``` - - 这是因为在创建resource时,填写的driver_class不正确,需要正确填写,如上方例子为大小写问题,应填写为 `"driver_class" = "com.mysql.jdbc.Driver"` + + 如以下异常: + + ``` + failed to load driver class com.mysql.jdbc.driver in either of hikariconfig class loader + ``` + + 这是因为在创建resource时,填写的driver_class不正确,需要正确填写,如上方例子为大小写问题,应填写为 `"driver_class" = "com.mysql.jdbc.Driver"` 5. 读取 MySQL 问题出现通信链路异常 - 如果出现如下报错: + 如果出现如下报错: - ``` - ERROR 1105 (HY000): errCode = 2, detailMessage = PoolInitializationException: Failed to initialize pool: Communications link failure + ``` + ERROR 1105 (HY000): errCode = 2, detailMessage = PoolInitializationException: Failed to initialize pool: Communications link failure + + The last packet successfully received from the server was 7 milliseconds ago. The last packet sent successfully to the server was 4 milliseconds ago. + CAUSED BY: CommunicationsException: Communications link failure + + The last packet successfully received from the server was 7 milliseconds ago. The last packet sent successfully to the server was 4 milliseconds ago. + CAUSED BY: SSLHandshakeExcepti + ``` + + 可查看be的be.out日志 + + 如果包含以下信息: - The last packet successfully received from the server was 7 milliseconds ago. The last packet sent successfully to the server was 4 milliseconds ago. - CAUSED BY: CommunicationsException: Communications link failure - - The last packet successfully received from the server was 7 milliseconds ago. The last packet sent successfully to the server was 4 milliseconds ago. - CAUSED BY: SSLHandshakeExcepti - ``` - - 可查看be的be.out日志 - - 如果包含以下信息: - - ``` - WARN: Establishing SSL connection without server's identity verification is not recommended. - According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. - For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. - You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification. - ``` - - 可在创建 Catalog 的 `jdbc_url` 把JDBC连接串最后增加 `?useSSL=false` ,如 `"jdbc_url" = "jdbc:mysql://127.0.0.1:3306/test?useSSL=false"` + ``` + WARN: Establishing SSL connection without server's identity verification is not recommended. + According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. + For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. + You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification. + ``` + + 可在创建 Catalog 的 `jdbc_url` 把JDBC连接串最后增加 `?useSSL=false` ,如 `"jdbc_url" = "jdbc:mysql://127.0.0.1:3306/test?useSSL=false"` diff --git a/docs/zh-CN/docs/lakehouse/multi-catalog/multi-catalog.md b/docs/zh-CN/docs/lakehouse/multi-catalog/multi-catalog.md index 27e457750e..797f8f42b3 100644 --- a/docs/zh-CN/docs/lakehouse/multi-catalog/multi-catalog.md +++ b/docs/zh-CN/docs/lakehouse/multi-catalog/multi-catalog.md @@ -269,79 +269,6 @@ under the License. 详见 [JDBC Catalog](./jdbc) -### 连接阿里云 Data Lake Formation - -> [什么是 Data Lake Formation](https://www.aliyun.com/product/bigdata/dlf) - -1. 创建 hive-site.xml - - 创建 hive-site.xml 文件,并将其放置在 `fe/conf` 目录下。 - - ``` - <?xml version="1.0"?> - <configuration> - <!--Set to use dlf client--> - <property> - <name>hive.metastore.type</name> - <value>dlf</value> - </property> - <property> - <name>dlf.catalog.endpoint</name> - <value>dlf-vpc.cn-beijing.aliyuncs.com</value> - </property> - <property> - <name>dlf.catalog.region</name> - <value>cn-beijing</value> - </property> - <property> - <name>dlf.catalog.proxyMode</name> - <value>DLF_ONLY</value> - </property> - <property> - <name>dlf.catalog.uid</name> - <value>20000000000000000</value> - </property> - <property> - <name>dlf.catalog.accessKeyId</name> - <value>XXXXXXXXXXXXXXX</value> - </property> - <property> - <name>dlf.catalog.accessKeySecret</name> - <value>XXXXXXXXXXXXXXXXX</value> - </property> - </configuration> - ``` - - * `dlf.catalog.endpoint`:DLF Endpoint,参阅:[DLF Region和Endpoint对照表](https://www.alibabacloud.com/help/zh/data-lake-formation/latest/regions-and-endpoints) - * `dlf.catalog.region`:DLF Region,参阅:[DLF Region和Endpoint对照表](https://www.alibabacloud.com/help/zh/data-lake-formation/latest/regions-and-endpoints) - * `dlf.catalog.uid`:阿里云账号。即阿里云控制台右上角个人信息的“云账号ID”。 - * `dlf.catalog.accessKeyId`:AccessKey。可以在 [阿里云控制台](https://ram.console.aliyun.com/manage/ak) 中创建和管理。 - * `dlf.catalog.accessKeySecret`:SecretKey。可以在 [阿里云控制台](https://ram.console.aliyun.com/manage/ak) 中创建和管理。 - - 其他配置项为固定值,无需改动。 - -2. 重启 FE,并通过 `CREATE CATALOG` 语句创建 catalog。 - - HMS resource 会读取和解析 fe/conf/hive-site.xml - ```sql - -- 1.2.0+ 版本 - CREATE RESOURCE dlf_resource PROPERTIES ( - "type"="hms", - "hive.metastore.uris" = "thrift://127.0.0.1:9083" - ) - CREATE CATALOG dlf WITH RESOURCE dlf_resource; - - -- 1.2.0 版本 - CREATE CATALOG dlf PROPERTIES ( - "type"="hms", - "hive.metastore.uris" = "thrift://127.0.0.1:9083" - ) - ``` - - 其中 `type` 固定为 `hms`。 `hive.metastore.uris` 的值随意填写即可,实际不会使用。但需要按照标准 hive metastore thrift uri 格式填写。 - - 之后,可以像正常的 Hive MetaStore 一样,访问 DLF 下的元数据。 - ## 列类型映射 用户创建 Catalog 后,Doris 会自动同步数据目录的数据库和表,针对不同的数据目录和数据表格式,Doris 会进行以下列映射关系。 @@ -392,24 +319,29 @@ Doris 的权限管理功能提供了对 Cataloig 层级的扩展,具体可参 </version> -1. CREATE DATABASE event:在对应数据目录下创建数据库。 -2. DROP DATABASE event:在对应数据目录下删除数据库。 -3. ALTER DATABASE event:此事件的影响主要有更改数据库的属性信息,注释及默认存储位置等,这些改变不影响doris对外部数据目录的查询操作,因此目前会忽略此event。 -4. CREATE TABLE event:在对应数据库下创建表。 -5. DROP TABLE event:在对应数据库下删除表,并失效表的缓存。 -6. ALTER TABLE event:如果是重命名,先删除旧名字的表,再用新名字创建表,否则失效该表的缓存。 -7. ADD PARTITION event:在对应表缓存的分区列表里添加分区。 -8. DROP PARTITION event:在对应表缓存的分区列表里删除分区,并失效该分区的缓存。 -9. ALTER PARTITION event:如果是重命名,先删除旧名字的分区,再用新名字创建分区,否则失效该分区的缓存。 -10. 当导入数据导致文件变更,分区表会走ALTER PARTITION event逻辑,不分区表会走ALTER TABLE event逻辑(注意:如果绕过HMS直接操作文件系统的话,HMS不会生成对应事件,doris因此也无法感知)。 +|事件 | 事件行为和对应的动作 | +|---|---| +| CREATE DATABASE | 在对应数据目录下创建数据库。 | +| DROP DATABASE | 在对应数据目录下删除数据库。 | +| ALTER DATABASE | 此事件的影响主要有更改数据库的属性信息,注释及默认存储位置等,这些改变不影响doris对外部数据目录的查询操作,因此目前会忽略此event。 | +| CREATE TABLE | 在对应数据库下创建表。 | +| DROP TABLE | 在对应数据库下删除表,并失效表的缓存。 | +| ALTER TABLE | 如果是重命名,先删除旧名字的表,再用新名字创建表,否则失效该表的缓存。 | +| ADD PARTITION | 在对应表缓存的分区列表里添加分区。 | +| DROP PARTITION | 在对应表缓存的分区列表里删除分区,并失效该分区的缓存。 | +| ALTER PARTITION | 如果是重命名,先删除旧名字的分区,再用新名字创建分区,否则失效该分区的缓存。 | + +> 当导入数据导致文件变更,分区表会走ALTER PARTITION event逻辑,不分区表会走ALTER TABLE event逻辑。 +> +> 如果绕过HMS直接操作文件系统的话,HMS不会生成对应事件,doris因此也无法感知 -该特性被fe的如下参数控制: +该特性被在 fe.conf 中有如下参数: 1. `enable_hms_events_incremental_sync`: 是否开启元数据自动增量同步功能,默认关闭。 2. `hms_events_polling_interval_ms`: 读取 event 的间隔时间,默认值为 10000,单位:毫秒。 3. `hms_events_batch_size_per_rpc`: 每次读取 event 的最大数量,默认值为 500。 -如果想使用该特性,需要更改HMS的 hive-site.xml 并重启HMS +如果想使用该特性,需要更改HMS的 hive-site.xml 并重启HMS: ``` <property> @@ -427,6 +359,4 @@ Doris 的权限管理功能提供了对 Cataloig 层级的扩展,具体可参 ``` -> 使用建议 -> -> 无论是之前已经创建好的catalog现在想改为自动刷新,还是新创建的 catalog,都只需要把 `enable_hms_events_incremental_sync` 设置为true,重启fe节点,无需重启之前或之后再手动刷新元数据。 +> 使用建议: 无论是之前已经创建好的catalog现在想改为自动刷新,还是新创建的 catalog,都只需要把 `enable_hms_events_incremental_sync` 设置为true,重启fe节点,无需重启之前或之后再手动刷新元数据。 --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org For additional commands, e-mail: commits-h...@doris.apache.org