我们有一个用例,我们在Redshift中处理数据。但我想在S3中创建这些表的备份,以便我可以使用Spectrum查询这些表。
为了将表从Redshift移动到S3,我使用的是Glue ETL。我为AWS Redshift创建了一个爬虫程序。胶水作业将数据转换为镶木地板并将其存储在S3中,按日期分区。然后,另一个爬网程序将对S3文件进行爬网以再次对数据进行编目。
如何消除第二个爬虫并在作业中执行此操作?
是的,你可以消除第二个爬虫而不是在工作中,或者你可以直接在Athena中创建一个表,如果你知道使用create external table DDL语句在s3中存在的文件的模式。然后在表上执行MSCK修复以填充所有分区中存在的数据,一旦完成,您可以使用glue update partition API调用将新分区更新到glue目录。
而不是创建另一个爬虫来更新粘合目录,而是在AWS Athena上创建一个外部表。有关create external table命令的更多详细信息,请参阅AWS的以下文档:
由于您的数据是分区的,因此每次运行后都需要在glue目录中更新分区信息。为此你可以使用MSCK修复命令如下:
MSCK REPAIR TABLE table_name
要使用代码自动执行此操作,您可以使用以下链接中的任何AWS开发工具包,具体取决于您选择的语言:AWS SDKs。