AWS Glue Crawler Классифицирует файл json как НЕИЗВЕСТНЫЙ

Я работаю над заданием ETL, которое включит файлы JSON в промежуточную таблицу RDS. Сканер, который я настроил, классифицирует файлы JSON без проблем, если они имеют размер менее 1 МБ. Если я уменьшу файл (вместо довольно печати), он классифицирует файл без проблем, если результат меньше 1 МБ.

У меня проблемы с поиском обходного пути. Я попытался преобразовать JSON в BSON или GZIPing файл JSON, но он все еще классифицируется как НЕИЗВЕСТНЫЙ.

Кто-нибудь еще сталкивался с этой проблемой? Есть лучший способ сделать это?

2 ответа

У меня есть два файла json размером 42 МБ и 16 МБ, разделенных на 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

Когда вы запускаете сканер, используя встроенный классификатор JSON, весь файл используется для определения схемы. Поскольку вы не указываете путь JSON, сканер обрабатывает данные как один объект, то есть просто массив.

Это то, на что Дунг также указал в своем ответе.

Также обратите внимание, что кодировка файла может привести к тому, что JSON будет классифицирован как НЕИЗВЕСТНЫЙ. Пожалуйста, попробуйте перекодировать файл как UTF-8.

Другие вопросы по тегам