amazon-web-services - 如何将 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 或任何其他资源中获取数据。所以我首先需要表格。
解决方案
假设您使用正确的模式及其所有分区填充了 Glue 表,您应该能够使用 Redshift Spectrum 在其上运行查询,而无需使用CREATE TABLE...
语句创建实际表。
从您的 RedShift 客户端/编辑器中,创建一个指向包含 Glue 表(此处命名为 )的数据目录数据库的外部(Spectrum)模式spectrum_db
。
iam_role
value 应该是您的 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。
参考):