AWS Glue Crawler 将 json 文件分类为 UNKNOWN
Posted
技术标签:
【中文标题】AWS Glue Crawler 将 json 文件分类为 UNKNOWN【英文标题】:AWS Glue Crawler Classifies json file as UNKNOWN 【发布时间】:2018-04-06 19:08:05 【问题描述】:我正在从事一项 ETL 作业,该作业会将 JSON 文件提取到 RDS 暂存表中。我配置的爬虫可以对小于 1MB 的 JSON 文件进行分类。如果我缩小文件(而不是漂亮的打印),如果结果小于 1MB,它将毫无问题地对文件进行分类。
我无法想出解决方法。我尝试将 JSON 转换为 BSON 或 GZIPing JSON 文件,但它仍然被归类为 UNKNOWN。
还有其他人遇到过这个问题吗?有一个更好的方法吗?
【问题讨论】:
谢谢,我被困了几个小时,删除缩进修复了它。 我也有同样的问题。你能给我更多关于这些缩进的细节吗?在哪里以及如何? 【参考方案1】:我有两个 json 文件,分别为 42mb 和 16mb,在 S3 上分区为路径:
s3://bucket/stg/year/month/_0.json
s3://bucket/stg/year/month/_1.json
我遇到了和你一样的问题,爬虫分类为 UNKNOWN。
我能够解决它:
您必须使用 jsonPath 作为“$[*]”创建自定义分类器,然后使用分类器创建新的爬虫。 使用 S3 上的数据运行新的爬虫,并创建适当的架构。 不要使用分类器更新您当前的爬虫,因为它不会应用更改,我不知道为什么,可能是因为他们的文档中提到的分类器版本控制 AWS。创建新的爬虫让它们工作【讨论】:
不幸的是,这对我不起作用。我能够重现文件 1mb 被保留为UNKNOWN
的问题。您提供的 JSON 路径用于处理包含 JSON 数组的文件,这与我的情况无关,因为我们的每个文件都包含一个对象。
如果您更改分类器定义,之前使用分类器抓取的任何数据都不会重新分类。使用更新的分类器对新数据进行分类,这可能导致更新的模式。 Learn more【参考方案2】:
如
中所述https://docs.aws.amazon.com/glue/latest/dg/custom-classifier.html#custom-classifier-json
当您使用内置 JSON 分类器运行爬虫时,整个文件用于定义架构。因为没有指定 JSON 路径,爬虫把数据当作一个对象,也就是一个数组。
Dung 在他的回答中也指出了这一点。
【讨论】:
【参考方案3】:另请注意,文件编码可能导致 JSON 被归类为 UNKNOWN。请尝试将文件重新编码为 UTF-8。
【讨论】:
难道没有其他方法可以让胶水读取其他编码的文件吗?重新编码似乎太多了以上是关于AWS Glue Crawler 将 json 文件分类为 UNKNOWN的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 AWS Glue Crawler 读取 PostgreSQL 表分区?
使用CloudFormation上的JdbcTargets指定Glue :: Crawler