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

AWS胶水-avro到拼花地板-从目录中获取空框架的胶水作业

董康平
2023-03-14

我正在使用AWS Glue爬行器来爬行大约170 GB的avro数据,以创建一个数据目录表。

avro数据中有几个不同的模式版本,但爬虫程序仍然能够将数据合并到一个表中(我启用了“按数据兼容性和模式相似性分组-模式”)。

这就是事情出现问题的时候。

我只能使用雅典娜从

GENERIC_INTERNAL_ERROR: Unknown object inspector category: UNION

一个简短的Google检查让我相信这与avro文件中的模式有关。

通常,这是我集中精力的地方,但是:我已经能够做完全相同的程序(AVRO-

转换作业之前需要大约一个小时。现在,当在170 GB的数据上运行相同的作业时,作业会在一分钟内完成,因为glueContext.create_dynamic_frame.from_catalog现在返回一个空帧——没有错误,什么都没有。混乱是真实的,因为我能够在Athena中对作业使用的同一表运行COUNT查询,返回520M对象的计数。

有人知道问题出在哪里吗?

以下几点可能与此相关:

  • COUNT查询返回520M但是表属性中的记录计数表示170M记录。
  • 数据存储在300k. avro文件中,大小为2MB-30MB
  • 是的,爬虫指向包含所有文件的文件夹,而不是文件(常见的爬虫抓取)。
  • 之前使用较小数据集(50 GB)的尝试100%成功-我可以抓取拼花数据并使用Athena进行查询(测试了许多不同的查询,都有效)

共有1个答案

王云
2023-03-14

我们遇到了同样的问题,可以通过以下方式解决。

在我们的avro模式中,有一个字段类型混合的记录,即一些字段类型为“”type“:[“string”],另一些字段类型为“”type“:[“null”,“string”]”。

将此手动更改为随处可见,我们可以在雅典娜中使用该表,没有任何问题。

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

  • 我已经创建了一个成功执行的AWS胶水作业。但是,我无法在作业中放置任何自定义日志记录。 如何在AWS S3存储桶中创建日志文件,以便跟踪日常作业执行情况? 目前,当我的工作执行时,它会创建默认日志(即火花日志),我可以在AWS云手表中看到它。在AWS胶水中记录事件的最佳实践是什么?

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

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

  • 当我试图提取1个表时,我使用AWS Glue从EC2(Postgre)提取要转换的数据,并将其放在S3上。我得到一个错误,如下所示: 有什么我能做的吗?我试图删除null字段或fillna,但这些都不起作用。

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