当前位置: 首页 > 知识库问答 >
问题:

使用AWS胶水将AWS Redshift转换为S3拼花文件

翟善
2023-03-14

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

为了将表从Redshift移动到S3,我使用了一个胶水ETL。我已经为AWS红移创建了一个爬虫程序。胶水作业将数据转换为拼花地板,并将其存储在S3中,按日期进行分区。然后,另一个爬虫会对S3文件进行爬行,以再次对数据进行编目。

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

共有3个答案

濮君植
2023-03-14

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

AWS雅典娜-创建表格

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

MSCK REPAIR TABLE table_name

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

鲜于渊
2023-03-14

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

栾峰
2023-03-14

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

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

文档可在UNLOAD-Amazon Redshift中找到

 类似资料:
  • 目前,我在S3中有数千个无头、管道分隔的GZIP压缩文件,总计约10TB,具有相同的模式。在AWS Glue中,(1)添加头文件,(2)使用文件中的“日期”字段转换为按周划分的拼花格式,(3)将文件添加到Glue数据目录中,以便在AWS Athena中进行查询?

  • 我如何使用胶水/火花转换成拼花,这也是分区的日期和分裂在n个文件每天?。这些示例不包括分区、拆分或供应(多少节点和多大节点)。每天包含几百GBS。 因为源CSV不一定在正确的分区中(错误的日期),并且大小不一致,所以我希望用正确的分区和更一致的大小写到分区的parquet。

  • 我有AWS胶水ETL作业,每15分钟运行一次,每次在S3中生成一个拼花文件。 我需要创建另一个作业来运行每小时结束,以使用AWS Glue ETL pyspark代码将S3中的所有4个拼花文件合并为1个拼花文件。 有人试过吗?建议和最佳做法? 提前感谢!

  • 我正在尝试使用AWS胶水将大约1.5 GB的Gzip CSV转换为拼花地板。下面的脚本是自动生成的粘合作业,用于完成该任务。这似乎需要很长时间(我已经等了10个dpu好几个小时了,从来没有看到它结束或产生任何输出数据) 我想知道是否有人有任何经验将1.5 GB GZIPPED CSV转换为镶木地板-是否有更好的方法来完成此转换? 我有TB的数据要转换。值得关注的是,转换GBs似乎需要很长时间。 我

  • 我每天都有csv文件被传递到S3,这些文件在当月是增量的。所以file1包含第1天的数据,file2包含第1天和第2天的数据,等等。每天我都想对该数据运行一个ETL并将其写入不同的S3位置,这样我就可以使用Athena查询它,而不会出现重复的行。本质上,我只想查询聚合数据的最新状态(这只是最近交付给S3的文件的内容)。 我认为书签不会起作用,因为增量交付包含以前文件中的数据,因此会产生重复。我知道

  • 我们需要每天将文本数据转换为拼花地板/avro,如果输入来自多个具有不同结构的源,我们希望使用基于spark sql的scala代码来实现这一点,而不考虑分隔符和列数或结构。