CREATE EXTERNAL SCHEMA
功能描述
创建EXTERNAL SCHEMA,即外部模式。该语法仅8.3.0及以上版本支持。
创建EXTERNAL SCHEMA来访问Lakeformation、DLI、Hive Metastore的表。用户可以使用外部模式名作为前缀进行访问,若无模式名前缀,则访问当前模式下的命名对象。
注意事项
- 只要拥有当前数据库CREATE权限的用户,就可以创建外部SCHEMA。
- 创建命名对象时不可用EXTERNAL SCHEMA作为前缀修饰,即不支持在EXTERNAL SCHEMA下创建对象。
- CREATE EXTERNAL SCHEMA不支持在新模式中创建对象的子命令。
语法格式
- 根据指定的名称创建EXTERNAL SCHEMA。
1 2 3 4 5 6 7 8
CREATE EXTERNAL SCHEMA schema_name WITH SOURCE source_name DATABASE 'database_name' SERVER server_name [ CATALOG 'catalog_name' ] [ OPTIONS ( { option_name ' value ' } [, ...] ) ] [METAADDRESS 'address'] [CONFIGURATION 'confpath'];
参数说明
参数 |
描述 |
取值范围 |
---|---|---|
schema_name |
外部模式名称。
|
字符串,需符合标识符命名规范。 |
SOURCE |
外部元数据存储引擎的类型。 |
当前仅支持dli,lakeformation,hive。 |
DATABASE |
指定外部SCHEMA所对应的要访问的数据库。 |
- |
SERVER |
外部SCHEMA关联的外部服务器名称,关联后可访问到外部数据。 |
支持关联type类型为lf、dli、obs或hdfs的Server。详情可参见CREATE SERVER。 |
CATALOG |
Lakeformation中对应的要访问的catalog,当Server的type为lf时需要指定catalog,否则不需要指定。 |
- |
OPTIONS |
用于指定外表数据的各类参数,当前支持的参数类型如右列所示。该参数仅8.3.0及以上版本支持。 |
dli_project_id:DLI服务对应的项目编号,可在管理控制台上获取项目ID,该参数仅支持type类型为dli的Server。 |
METAADDRESS |
表示Hive Metastore通讯接口。该参数仅9.1.0及以上版本支持。 |
- |
CONFIGURATION |
表示Hive Metastore相关配置文件存放路径。该参数仅9.1.0及以上版本支持。 |
如果当前搜索路径上的模式中存在同名对象时,需要明确指定引用对象所在的模式。可以通过命令SHOW SEARCH_PATH来查看当前搜索路径上的模式。 |
示例
- 通过external schema读取Lakeformation表。
- 创建lf_server,对应的foreign data wrapper为DFS_FDW。
如何创建lf_server请参见《用户指南》中“管理LakeFormation数据源”章节。
- 创建external schema,SOURCE填写lakeformation,表关联的DLI服务器为lf_server。其中DATABASE为对应的Lakeformation数据库,CATALOG为对应要访问的Lakeformation的CATALOG,根据实际替换。
1 2 3 4 5
CREATE EXTERNAL SCHEMA ex_lf WITH SOURCE lakeformation DATABASE 'demo' SERVER lf_server CATALOG 'hive';
- 角色授权
- 查询当前用户。
- SELECT current_user;
- Lakeformation管控面创建与当前同名角色并对要访问的表授权。
- 通过external schema查询Lakeformation表的数据,test_lf为要访问的Lakeformation表。
1 2 3 4 5
SELECT COUNT(*) FROM ex_dli.test_lf; count ------- 20 (1 row)
- 创建lf_server,对应的foreign data wrapper为DFS_FDW。
- 通过external schema读取Hive Metastore表。仅9.1.0及以上版本支持。
- 创建obs/hdfs server,对应的foreign data wrapper为DFS_FDW。
1 2 3 4 5 6 7 8 9 10 11 12 13
CREATE SERVER hdfs_server FOREIGN DATA WRAPPER HDFS_FDW OPTIONS ( address '***.***.***.***:9000', type'HDFS'); CREATE SERVER obs_server FOREIGN DATA WRAPPER dfs_fdw OPTIONS ( address 'obs.cn-north-1.myhuaweicloud.com' , ACCESS_KEY 'access_key_value_to_be_replaced', SECRET_ACCESS_KEY 'secret_access_key_value_to_be_replaced', encrypt 'on', type 'obs' );
- 创建external schema,SOURCE为hive,表关联的服务器为obs/hdfs server。其中DATABASE为对应的HMS数据库,METAADDRESS表示Hive Metastore通讯接口,CONFIGURATION表示Hive Metastore相关配置文件存放路径,根据实际替换。
1 2 3 4 5 6
CREATE EXTERNAL SCHEMA ex_hms WITH SOURCE source_type DATABASE 'db_name' SERVER srv_name METAADDRESS 'address' CONFIGURATION 'confpath';
- 通过external schema查询HMS表的数据,test_hms为要访问的HMS表,根据实际替换。
1 2 3 4 5
SELECT COUNT(*) FROM ex_hms.test_hms; count ------- 20 (1 row)
- 创建obs/hdfs server,对应的foreign data wrapper为DFS_FDW。