AWS Glue Crawler не может анализировать большие файлы (классификация НЕИЗВЕСТНО) - PullRequest
0 голосов
/ 28 мая 2020

Я пытался использовать краулер из AWS Glue, чтобы попытаться получить столбцы и другие функции определенного файла json.

Я проанализировал json файл локально, преобразовав его в UTF-8 и используя boto3, чтобы переместить его в контейнер s3 и получить доступ к этому контейнеру из сканера.

Я создал классификатор json с настраиваемым классификатором $ [*] и создал поисковый робот с обычными настройками.

Когда я делаю это с файлом, который относительно мал (<50 Кб), поисковый робот правильно определяет столбцы, а также внутреннюю схему внутренних json слоев в основном json. Однако для файла, который я пытаюсь обработать (около 1 Гб), поисковый робот имеет классификацию «НЕИЗВЕСТНО» и не может идентифицировать какие-либо столбцы, поэтому я не могу запросить его. какая-то работа? </p>

Я в конечном итоге пытаюсь преобразовать его в формат Parquet и выполняю некоторые запросы с помощью Athena.

Я просмотрел следующее сообщение , но это решение не сработало . Я уже пробовал переписать свой классификатор и краулер. Я также предполагаю, что это не основные проблемы, потому что я использовал $ [*] в качестве настраиваемого классификатора и использовал практически идентичные настройки, пытаясь сделать это с меньшим файлом с тем же результатом.

Я начинаю думать, что причина как раз в большом размере файла.

Ответы [ 2 ]

1 голос
/ 28 мая 2020

Возможно, я ошибаюсь, но есть своего рода ограничение на размер обрабатываемого файла. Попробуйте разбить большой файл на файлы по 10Мб (рекомендуемый размер). Сканер будет обрабатывать эти файлы параллельно, и при повторном запуске он обработает только измененные / новые файлы. Извините, мне не удалось найти соответствующую документацию aws, просто попробуйте и посмотрите, будет ли она работать

0 голосов
/ 12 июня 2020

Следующее исправление, которое я в итоге использовал. у вас был большой файл, например, в следующем формате:

[
  {},
  {},
  {},...
]

Вы можете вручную удалить последний и первый символы с помощью чего-то вроде str[1:-1], что даст вам:

{}
{}
{}...

Я закончил разделив файл на более мелкие части (от 10 до 50 МБ от исходного файла размером 1 ГБ), и поисковому роботу, казалось, это не понравилось.

...