使用 AWS Glue 将 AWS Redshift 转换为 S3 Parquet 文件

AWS Redshift to S3 Parquet Files Using AWS Glue

我们有一个在 Redshift 中处理数据的用例。但我想在 S3 中创建这些表的备份,以便我可以使用 Spectrum 查询这些表。

为了将表从 Redshift 移动到 S3,我使用了 Glue ETL。 我为 AWS Redshift 创建了一个爬虫。 Glue 作业将数据转换为镶木地板并将其存储在 S3 中,按日期分区。然后,另一个爬虫爬取 S3 文件以再次对数据进行分类。

如何消除第二个爬虫并在作业中执行此操作?

是的,你可以消除第二个爬虫,但不在工作中,或者你可以直接在 Athena 中创建一个 table,如果你知道 s3 中存在的文件的架构,使用 create external table DDL声明。然后在 table 上执行 MSCK 修复以填充所有分区中存在的数据,一旦完成,您可以使用 glue update partition API 调用将新分区更新到 glue 目录。

不是创建另一个爬虫来更新粘合目录,而是在 AWS Athena 上创建一个外部 table。有关创建外部 table 命令的更多详细信息,请参阅 AWS 的以下文档:

AWS Athena - Create Table

由于您的数据是分区的,您需要在每 运行 后更新 glue catalog 中的分区信息。为此,您可以使用如下 MSCK 修复命令:

MSCK REPAIR TABLE table_name

要使用代码自动执行此操作,您可以使用以下 link 中的任何 AWS SDK,具体取决于您选择的语言:AWS SDKs.

无需使用AWS Glue 或Athena 将Redshift 数据以Parquet 格式卸载到S3。 Redshift 现在支持以 Parquet 格式卸载数据的功能:

UNLOAD ('select-statement')
TO 's3://object-path/name-prefix'
FORMAT PARQUET

可在 UNLOAD - Amazon Redshift

找到文档