Я использую Pig на Amazon Elastic Map-Reduce для выполнения пакетной аналитики. Мои входные файлы находятся на S3 и содержат события, которые представлены одним словарем JSON на строку. Я использую библиотеку elephantbird JsonLoader для разбора входных файлов. Пока все хорошо.
У меня проблемы с обработкой большого файла, хранящегося в локальной файловой системе или hdf, в интерактивном сеансе Pig. Похоже, что если входной файл достаточно велик, чтобы разделить, elephantbird когда-либо обрабатывал только один из разделов, и обработка останавливается без сообщения об ошибке в конце разделения. У меня нет той же проблемы, если я транслирую ввод с S3 (без разделения файла на входе S3) или если я конвертирую файл в формат, читаемый Pig напрямую.
Для конкретного примера: файл с 833 138 строками обрабатывается только до 379 751 строки (и если я наблюдаю процент выполнения в Pig, он плавно достигает 50%, а затем скачет до 100%). Я также попытался с файлом с 400 000 строк, и он был обработан нормально.
Итак, мой вопрос: почему слоновой птицей обрабатывается только один сплит? Я неправильно понимаю, как Pig в интерактивном режиме должен работать или происходит что-то дикое неправильно?