如何将AWS Glue表结构复制到AWS Redshift



我在不使用爬网程序的情况下使用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红移频谱创建外部模式

最新更新