Nee*_*mar 5 amazon-redshift amazon-athena
我正在尝试通过 AWS Redshift 访问现有的 AWS Athena 表。
我尝试在 AWS Redshift 控制台中创建外部架构(指向 AWS Athena DB)。它成功创建了外部架构,但不显示来自 Athena DB 的表。下面是使用的代码。
CREATE EXTERNAL SCHEMA Ext_schema_1
FROM DATA CATALOG
DATABASE 'sample_poc'
REGION 'us-east-1'
IAM_ROLE 'arn:aws:iam::55276673986:role/sample_Redshift_Role';
Run Code Online (Sandbox Code Playgroud)
很少观察..
AWS Glue Catalog 包含数据库,其中包含表。从 Athena 或 Glue Catalog 的角度来看,没有模式。
在 Redshift Spectrum 中,您创建一个EXTERNAL SCHEMA实际上是占位符对象的对象,它是 Redshift 中指向 Glue Catalog 的指针。
- 即使我指定不存在的 Athena 数据库名称,它仍然会在 Redshift 中创建外部架构。
正如您所发现的,对象的创建是惰性的,如果 IAM 角色需要调整,这非常有用。请注意,文档中的示例有一个附加子句:
create external database if not exists
因此,如果您还希望创建数据库,则完整的语句需要是这样的。
CREATE EXTERNAL SCHEMA Ext_schema_1
FROM DATA CATALOG
DATABASE 'sample_poc'
REGION 'us-east-1'
IAM_ROLE 'arn:aws:iam::55276673986:role/sample_Redshift_Role'
CREATE EXTERNAL DATABASE IF NOT EXISTS;
Run Code Online (Sandbox Code Playgroud)
它不显示 Athena DB 中的表
如果您要为不存在的数据库创建外部架构,则不会显示任何内容。我假设你的观点1.与您创建外部模式的真正尝试无关;您将其指向带有表的现有架构。
我发现 Athena 可通过 Glue Catalog 立即使用使用 Redshift Spectrum DDL 创建的表。我还尝试在 Glue Catalog 中指定表,或者使用 Crawler,在这两种情况下,这些表在 Redshift 中都是可见的。
您使用什么工具来尝试显示表格?您的意思是表未在元数据视图中列出,还是表的内容不显示?
Redshift 确实在允许的数据类型方面存在一些差异,并且 Athena 中所需的 Hive DDL 可能与 Redshift Spectrum DDL 存在一些差异。Spectrum 有一些嵌套限制。
- 我的 Redshift 角色具有对 S3 和 Athena 的完全访问权限
假设您使用的是 Glue Catalog 而不是旧的 Athena 目录,那么您的角色不需要任何 Athena 访问权限。
| 归档时间: |
|
| 查看次数: |
1106 次 |
| 最近记录: |