2

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

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

我怎样才能消除第二个爬虫并在工作本身中做到这一点?

4

3 回答 3

3

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

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

可在UNLOAD - Amazon Redshift中找到文档

于 2019-12-04T17:03:50.420 回答
0

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

于 2019-04-23T16:03:21.170 回答
0

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

AWS Athena - 创建表

由于您的数据是分区的,因此您需要在每次运行后更新粘合目录中的分区信息。为此,您可以使用 MSCK 修复命令,如下所示:

MSCK REPAIR TABLE table_name

要使用代码自动执行此操作,您可以使用以下链接中的任何 AWS 开发工具包,具体取决于您选择的语言:AWS 开发工具包

于 2019-05-07T15:20:35.737 回答