我正在处理一个 ETL 作业,该作业会将 JSON 文件摄取到 RDS 临时表中。我配置的爬网程序可以毫无问题地对 JSON 文件进行分类,只要它们的大小小于 1MB。如果我缩小一个文件(而不是漂亮的打印),如果结果小于 1MB,它将毫无问题地对文件进行分类。
我在想出解决方法时遇到问题。我尝试将 JSON 转换为 BSON 或 GZIP 压缩 JSON 文件,但它仍然被归类为未知。
还有其他人遇到过这个问题吗?有没有更好的方法可以做到这一点?
我有两个 42mb 和 16mb 的 json 文件,在 S3 上分区为路径:
-
s3://bucket/stg/year/month/_0.json
-
s3://bucket/stg/year/month/_1.json
我和你有同样的问题,爬虫分类为未知。
我能够解决它:
- 您必须使用 jsonPath 作为"$[*]"创建自定义分类器,然后使用该分类器创建新的爬网器。
- 使用 S3 上的数据运行新爬网程序,将创建正确的架构。
- 不要使用分类器更新您当前的爬虫,因为它不会应用更改,我不知道为什么,可能是因为他们文档中提到的分类器版本控制AWS。创建新的爬网程序使它们正常工作
如中所述
https://docs.aws.amazon.com/glue/latest/dg/custom-classifier.html#custom-classifier-json
使用内置 JSON 分类器运行爬网程序时,整个文件用于定义架构。由于您未指定 JSON 路径,因此爬网程序将数据视为一个对象,即只是一个数组。
这是阮在回答中也指出的。
另请注意,文件编码可能导致 JSON 被归类为未知。请尝试将文件重新编码为 UTF-8。