首页 > 解决方案 > 如何将 AWS Glue 表结构复制到 AWS Redshift

问题描述

我使用 AWS Glue 创建了新的数据库和表结构而不使用爬虫,并且可以做同样的事情,我的意思是使用爬虫创建表结构。这不是问题,我想要的是基于 AWS Glue 表元数据在 AWS Redshift 中创建相同的表结构

我用 Django 和 Python 手动完成了它,我获取了表的元数据并创建了“CREATE TABLE ...”命令并执行它。它有效,我已经有了这个替代解决方案。我们可以从 AWS 端或使用 AWS 开发工具包(例如 Boto3)来执行此操作吗?我不需要表内的任何数据,只想在 AWS Redshift 中创建空表。这可能吗?

我还检查了 AWS Redshift Spectrum。如果我可以在 AWS Redshift 中创建此表,那么使用频谱命令我可以从 S3 或任何其他资源中获取数据。所以我首先需要表格。

标签: amazon-web-servicesamazon-s3amazon-redshiftaws-glueamazon-redshift-spectrum

解决方案


假设您使用正确的模式及其所有分区填充了 Glue 表,您应该能够使用 Redshift Spectrum 在其上运行查询,而无需使用CREATE TABLE...语句创建实际表。

从您的 RedShift 客户端/编辑器中,创建一个指向包含 Glue 表(此处命名为 )的数据目录数据库的外部(Spectrum)模式spectrum_dbiam_rolevalue 应该是您的 Redshift 集群 IAM 角色的 ARN,您将在其中添加glue:GetTable操作策略。

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;

您现在应该能够对外部 Glue 表运行查询。这样做的唯一约束是你不能SELECT *超过你的表:

SELECT ... FROM spectrum_schema.Your_table

从那里您应该能够更轻松地将数据从 Spectrum 移动到 Standard Redshift。

参考):


推荐阅读