我在不使用爬网程序的情况下使用AWS Glue创建了新的数据库和表结构,并且可以做同样的事情,我的意思是使用爬网程序创建表结构。这不是问题所在,我想要的是在AWS Redshift中基于AWS Glue表元数据创建相同的表结构。
我用Python用Django手动完成了这项工作,我获得了表的元数据,并创建了"create table…"命令并执行它。它很有效,我已经有了这个替代解决方案我们可以从AWS端或使用Boto3等AWS SDK来执行此操作吗?我不需要表中的任何数据,只想在AWS Redshift中创建空表。这可能吗?
我还检查了AWS红移频谱。如果我可以在AWS Redshift中创建这个表,那么使用spectrum命令我可以从S3或任何其他资源中获取数据。所以,我首先需要桌子。
假设您用正确的模式及其所有分区填充了Glue表,那么您应该能够使用Redshift Spectrum对其运行查询,而不必使用CREATE TABLE...
语句创建实际的表。
从您的RedShift客户端/编辑器中,创建一个外部(Spectrum(模式,指向包含Glue表的数据目录数据库(此处命名为spectrum_db
(。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
从那里,您应该能够更容易地将数据从频谱移动到标准红移。
参考:
- 为Amazon红移频谱创建外部模式