我使用 AWS Glue 创建了新的数据库和表结构,而不使用爬网程序,并且可以执行相同的操作,我的意思是使用爬网程序创建表结构。这不是问题,我想要的是基于 AWS Glue 表元数据在 AWS Redshift 中创建相同的表结构。
我使用 Django 和 Python 手动完成此操作,获取表的元数据并创建“CREATE TABLE ...”命令并执行它。它有效,我已经有了这个替代解决方案。 我们可以从 AWS 端执行此操作或使用 Boto3 等 AWS 开发工具包吗?我不需要表内的任何数据,只想在 AWS Redshift 中创建空表。这可能吗?
我还检查了 AWS Redshift Spectrum。如果我可以在 AWS Redshift 中创建此表,那么使用 Spectrum 命令我可以从 S3 或任何其他资源获取数据。因此,我首先需要表格。
最佳答案
假设您使用正确的架构及其所有分区填充了 Glue 表,您应该能够使用 Redshift Spectrum 对其运行查询,而无需使用 CREATE TABLE... 创建实际的表...
声明。
从您的 RedShift 客户端/编辑器中,创建一个指向包含 Glue 表(此处名为 spectrum_db
)的数据目录数据库的外部 (Spectrum) 架构。
iam_role
值应该是您的 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 移动到标准 Redshift。
引用文献:
关于amazon-web-services - 如何将 AWS Glue 表结构复制到 AWS Redshift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60646635/