Amazon Redshift
数据库开发人员指南 (API Version 2012-12-01)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。点 击 Getting Started with Amazon AWS to see specific differences applicable to the China (Beijing) Region.

CREATE EXTERNAL SCHEMA

在当前数据库中创建一个新外部架构。此架构的所有者为 CREATE EXTERNAL SCHEMA 命令的发布者。使用 GRANT 命令可为其他用户或组授予对此架构的访问权限。

您无法授予或撤销对外部表的权限。相反,您可授予或撤销对外部架构的权限。

Amazon Redshift 外部架构引用了 Amazon Athena 中的外部数据目录中的数据库或 Apache Hive 元存储 (如 Amazon EMR) 中的数据库。

所有外部表必须在外部架构中创建。您无法在外部架构中创建本地表。有关更多信息,请参阅 CREATE EXTERNAL TABLE

外部架构不支持搜索路径。

要查看外部架构的详细信息,请查询 SVV_EXTERNAL_SCHEMAS 系统视图。

语法

CREATE EXTERNAL SCHEMA [IF NOT EXISTS] schema_name FROM { [ DATA CATALOG ] | HIVE METASTORE } DATABASE 'database_name' [ REGION 'aws-region' ] [ URI 'hive_metastore_uri' [ PORT port_number ] IAM_ROLE 'iam-role-arn' [ CREATE EXTERNAL DATABASE IF NOT EXISTS ]

参数

IF NOT EXISTS

一个子句,指示如果指定架构已存在,则此命令不应进行任何更改,并应返回一条指示架构存在的消息,而不是以错误终止。此子句在编写脚本时很有用,可使脚本在 CREATE EXTERNAL SCHEMA 尝试创建已存在的架构时不会失败。

schema_name

新外部架构的名称。有关有效名称的更多信息,请参阅名称和标识符

FROM [ DATA CATALOG ] | HIVE METASTORE

指示外部数据库所在位置的关键词。

DATA CATALOG 指示外部数据库是在 Athena 数据目录中定义的。

如果外部数据库是在位于其他区域的 Athena 数据目录中定义的,则 REGION 参数为必填项。DATA CATALOG 是默认值。

HIVE METASTORE 指示外部数据库是在 Hive 元存储中定义的。如果指定了 HIVE METASTORE,则 URI 为必填项。

REGION 'aws-region'

如果外部数据库是在 Athena 数据目录中定义的,则为数据库所在的区域。如果数据库是在 Athena 数据目录中定义的,则此参数为必填项。

URI 'hive_metastore_uri' [ PORT port_number ]

如果数据库位于 Hive 元存储中,请指定 URI 并选择性地指定元存储的端口号。默认端口号为 9083。

IAM_ROLE 'iam-role-arn'

IAM 角色的 Amazon 资源名称 (ARN),您的集群使用该角色进行身份验证和授权。IAM 角色至少必须有权在要访问的 Amazon S3 存储桶上执行 LIST 操作和有权在该存储桶包含的 S3 对象上执行 GET 操作。如果外部数据库是在 Athena 数据目录中定义的,则 IAM 角色必须有权访问 Athena。有关更多信息,请参阅 Amazon Redshift Spectrum 的 IAM 策略。以下显示 IAM_ROLE 参数的语法。

IAM_ROLE 'arn:aws:iam::<aws-account-id>:role/<role-name>'

CREATE EXTERNAL DATABASE IF NOT EXISTS

一个子句,用于在指定的外部数据库不存在时使用由 DATABASE 参数指定的名称创建外部数据库。如果指定的外部数据库存在,该命令不会进行任何更改。在这种情况下,该命令将返回指示外部数据库存在的消息,而不是以错误终止。

注意

CREATE EXTERNAL DATABASE IF NOT EXISTS 不能与 HIVE METASTORE 一起使用。

使用说明

当使用 Athena 数据目录时,以下限制适用:

  • 每个账户最多 100 个数据库。

  • 每个数据库最多 100 个表。

  • 每个表最多 20000 个分区。

您可通过联系 AWS Support 来请求增加限制。

这些限制不适用于 Hive 元存储。

示例

以下示例创建一个外部架构,此架构使用位于美国西部(俄勒冈)区域的名为 sampledb 的 Athena 数据目录中的数据库。

Copy
create external schema spectrum_schema from data catalog database 'sampledb' region 'us-west-2' iam_role 'arn:aws:iam::123456789012:role/MySpectrumRole';

以下示例创建一个外部架构并新建一个名为 spectrum_db 的新外部数据库。

Copy
create external schema spectrum_schema from data catalog database 'spectrum_db' iam_role 'arn:aws:iam::123456789012:role/MySpectrumRole' create external database if not exists;

以下示例创建一个使用名为 hive_db 的 Hive 元存储数据库的外部架构。

Copy
create external schema hive_schema from hive metastore database 'hive_db' uri '172.10.10.10' port 99 iam_role 'arn:aws:iam::123456789012:role/MySpectrumRole';

本页内容: