amazon-web-services - 如何将 AWS Glue 表结构复制到 AWS Redshift

标签 amazon-web-services amazon-s3 amazon-redshift aws-glue amazon-redshift-spectrum

我使用 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/

相关文章:

amazon-web-services - API Gateway 映射模板将 JSON 字符串转换为逗号分隔的 key=value 对

Java、DynamoDB : Is it possible to custom-marsall a Set?

amazon-ec2 - 在硬件故障期间,基于 EBS 的 EC2 实例是终止还是停止?

spring - 在 Spring MVC Web 应用程序中从 Amazon S3 服务下载上传的文件

sql - Redshift - 除以零误差

python - 如何在 AWS Glue 中运行查询

amazon-web-services - 在Pod与具有自己的pvc卷的每个Pod之间使用共享卷有什么优缺点(在有状态集的情况下)?

java - Spark使用s3a以多线程方式写入文件

php - 如何创建 amazon MySQL RDS 实例的镜像并连接到它?

odbc - AWS RedShift - .NET Core(ODBC 支持?)