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

如何使用AWS胶水将存储在S3中的无头压缩管道分隔文件转换为拼花地板

步炯
2023-03-14

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

共有1个答案

益富
2023-03-14

1) 创建一个athena表,将数据指向S3:

在athena上创建外部表

2) 使用在上述步骤中创建的表,从粘合目录创建动态框架。

from awsglue.context import GlueContext
glueContext = GlueContext(SparkContext.getOrCreate())
DyF = glueContext.create_dynamic_frame.from_catalog(database="{{database}}", table_name="{{table_name}}")

3) 以您喜欢的任何格式将数据写回新的S3位置:

glueContext.write_dynamic_frame.from_options(
   frame = DyF,
   connection_type = "s3",
   connection_options = {"path": "path to new s3 location"},
   format = "parquet")

4)创建一个雅典娜表,将您的拼花地板数据指向S3:

在athena上创建外部表

注意:您也可以使用glue crawler为您创建一个athena表,而不是手动创建athena表。然而,这将招致一些费用。

 类似资料:
  • 我们有一个以红移方式处理数据的用例。但我想在S3中创建这些表的备份,以便使用Spectrum查询这些表。 为了将表从Redshift移动到S3,我使用了一个胶水ETL。我已经为AWS红移创建了一个爬虫程序。胶水作业将数据转换为拼花地板,并将其存储在S3中,按日期进行分区。然后,另一个爬虫会对S3文件进行爬行,以再次对数据进行编目。 如何消除第二个爬虫并在作业本身中执行此操作?

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

  • 我能够以拼花格式写入,并通过如下列进行分区: 但我无法用Glue的DynamicFrame做到这一点。 我试图通过作为的一部分,因为AWS文档说拼花胶不支持任何格式选项,但这不起作用。 这有可能吗?怎么可能?至于这样做的原因,我认为工作书签是必要的,因为这对我目前不起作用。

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

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

  • 我正在使用AWS Glue爬行器来爬行大约170 GB的avro数据,以创建一个数据目录表。 avro数据中有几个不同的模式版本,但爬虫程序仍然能够将数据合并到一个表中(我启用了“按数据兼容性和模式相似性分组-模式”)。 这就是事情出现问题的时候。 我只能使用雅典娜从 一个简短的Google检查让我相信这与avro文件中的模式有关。 通常,这是我集中精力的地方,但是:我已经能够做完全相同的程序(A