【问题标题】:AWS Glue Crawler Classifies json file as UNKNOWNAWS Glue Crawler 将 json 文件分类为 UNKNOWN
【发布时间】:2018-04-06 19:08:05
【问题描述】:

我正在从事一项 ETL 作业,该作业会将 JSON 文件提取到 RDS 暂存表中。我配置的爬虫可以对小于 1MB 的 JSON 文件进行分类。如果我缩小文件(而不是漂亮的打印),如果结果小于 1MB,它将毫无问题地对文件进行分类。

我无法想出解决方法。我尝试将 JSON 转换为 BSON 或 GZIPing JSON 文件,但它仍然被归类为 UNKNOWN。

还有其他人遇到过这个问题吗?有一个更好的方法吗?

【问题讨论】:

  • 谢谢,我被困了几个小时,删除缩进修复了它。
  • 我也有同样的问题。你能给我更多关于这些缩进的细节吗?在哪里以及如何?

标签: json amazon-web-services pyspark aws-glue


【解决方案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。

    【讨论】:

    • 难道没有其他方法可以让胶水读取其他编码的文件吗?重新编码似乎太多了
    猜你喜欢
    • 1970-01-01
    • 2020-09-26
    • 1970-01-01
    • 2018-06-30
    • 2020-01-22
    • 2021-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多