2015-05-28 3 views
0

Я получаю сообщение об ошибке: Ошибка при разборе. Ограничение повторения более ограничительное: не может объединить требуемый двоичный файл MyTime в необязательный двоичный файл MyTime. Возможно, один из файлов поврежден, но я не знаю, как его пропустить.Parquetloader: невозможно загрузить несколько паркетных файлов с помощью свиньи

Благодаря

ответ

1

Это происходит при чтении нескольких файлов паркет, которые имеют несколько различных метаданные в их схемах. Либо у вас есть смешанная коллекция файлов в одном каталоге, либо вы даете оператору LOAD глобус, и в этом случае смешанный набор файлов смешивается.

Вместо указания схемы в AS() пункте или сделать голый вызов функции загрузчика решения переопределить схему в аргументе функции загрузчика, как это:

data = LOAD 'data' 
    USING parquet.pig.ParquetLoader('n1:int, n2:float, n3:double, n4:long') 

В противном случае функция загрузчика выводит схема из первого файла, с которым он сталкивается, который затем конфликтует с одним из других.

Если у вас все еще есть проблема, попробуйте использовать тип bytearray в спецификации схемы, а затем лить в нужные типы в следующем FOREACH.

В соответствии с Parquet source code есть еще один аргумент функции загрузчика, который позволяет столбцам указывать позицию, а не имя (по умолчанию), но я не экспериментировал с этим.

+0

См. Также http://www.ericlin.me/unable-to-read-parquet-files-with-same-schema-and-different-flags-in-pig –

Смежные вопросы