我们有一个用例,其中我们在Redshift中处理数据。但是我想在S3中创建这些表的备份,以便可以使用Spectrum查询这些表。
为了将表格从Redshift移至S3,我使用的是Glue ETL。 我已经为AWS Redshift创建了一个搜寻器。胶水作业将数据转换为实木复合地板并将其存储在按日期划分的S3中。然后,另一个爬网程序对S3文件进行爬网以再次对数据进行分类。
如何消除第二个搜寻器,并在工作本身中做到这一点?
答案 0 :(得分:1)
无需使用AWS Glue或Athena将Pardition格式的Redshift数据卸载到S3。 Redshift现在支持以Parquet格式卸载数据的功能:
UNLOAD ('select-statement')
TO 's3://object-path/name-prefix'
FORMAT PARQUET
找到文档
答案 1 :(得分:0)
是的,您可以消除第二个搜寻器,但不能使用它,或者,如果您知道使用创建外部表DDL语句显示s3中存在的文件的架构,则可以直接在Athena中创建表。然后在表上执行MSCK修复以填充所有分区中存在的数据,完成此操作后,您可以使用“胶水更新分区API”调用将新分区更新到胶水目录中。
答案 2 :(得分:0)
不是创建另一个搜寻器来更新胶目录,而是在AWS Athena上创建一个外部表。有关创建外部表命令的更多详细信息,请参阅AWS的以下文档:
由于已对数据进行了分区,因此每次运行后,您将需要在胶目录中更新分区信息。为此,您可以使用MSCK repair命令,如下所示:
MSCK REPAIR TABLE table_name
要使用代码自动执行此操作,您可以使用以下链接中的任何AWS开发工具包,具体取决于您选择的语言:AWS SDKs。