Glue Crawler исключает много файлов из таблицы после запуска на данных S3 json GZIP - PullRequest
0 голосов
/ 07 февраля 2019

У меня есть лямбда, которая принимает данные json из балансировщика нагрузки, а затем записывает каждую отдельную запись json с PUT в поток кинезиса.Поток кинезиса является источником пожарного рукава кинесиса, который помещает GZIP в ведро S3 с префиксом «raw».Пример записи JSON:

{"level":"INFO","hash":"3c351293-11e3-4e32-baa2- 
bf810ed44466","source":"FE","hat_name":"2249444f-c3f4-4e3d-8572- 
c38c3dab4848","event_type":"MELT_DOWN","payload":{"checking": "true"}}

Я создал рентгеновскую трассировку в производящей лямбде, поэтому у меня есть представление о том, сколько запросов PUT (то есть каждой отдельной записи JSON).За период времени, в течение которого у меня был включен этот прием, я отправил около 18 000 записей в поток kinesis.Когда я запустил сканер в таблице с префиксом «raw» (я использовал настройки по умолчанию, но отметил в разделе «Вывод сканеров» «Обновить все новые и существующие разделы с метаданными из таблицы.», Чтобы избежать HIVE_PARTITION_SCHEMA_MISMATCH. Искатель работает и успешнообнаруживает схему и выглядит следующим образом:

column . data type
level .  string
hash     string
source .  string
hat_name string
event_type string
payload string .    <--- (only nested json field that has lots of possible internal structure)
parition_0  string
partition_1 string
partition_2 string
partition_3 string

Как только таблица создана, я замечаю, что существует только около 4000 записей, и она должна иметь примерно в 4 раза больше количества записей. Позже я снова запускаю сканери я заметил в журналах, что одна строка говорит:

ИНФОРМАЦИЯ: Некоторые файлы не соответствуют обнаруженной схеме. Удалите или исключите следующие файлы из искателя

Я исследовал некоторые исключенные файлыу большинства из них были действительные данные JSON, однако один или два файла имели усеченную запись json в конце файла, например, так:

{"level":"INFO","hash":"3c351293-11e3-4e32-baa2- 
bf810ed44466","source":"FE","hat_name":"2249444f-c3f4-4e3d-8572- 
c38c3dab4848","event_type":"MELT_DOWN","payload":{"checking": 
"true"}}{"level":"INFO","hash":"3c351293-11e3-4e32-baa2- 
bf810ed44466","source":"FE","hat_name":"2249444f-c3f4-4e3d-8572- 
c38c3dab4848","event_type":"MELT_DOWN","payl

Что нужно сделать в связке, чтобы иметь все записизагружен в таблицу, у меня должно быть около 18000, а не 4200? Я думаю, что одна проблема заключается в схеме можетне совпадает с некоторыми записями?Но я утверждаю в кинезис-производителе, что это действительный json Strucutre с соответствующими полями верхнего уровня.Вторая проблема, которую я вижу, это файл с усеченной записью json?Я предполагаю, что это может быть проблемой с пакетным запуском файлов?Любая помощь приветствуется.

Примечание. Я пытался вручную создать таблицу json, определяющую все поля верхнего уровня, и у меня все еще остается та же проблема. Он находит только около 4200 записей при запросе в Афине.

...