Это происходит при чтении нескольких файлов паркет, которые имеют несколько различных метаданные в их схемах. Либо у вас есть смешанная коллекция файлов в одном каталоге, либо вы даете оператору LOAD
глобус, и в этом случае смешанный набор файлов смешивается.
Вместо указания схемы в AS()
пункте или сделать голый вызов функции загрузчика решения переопределить схему в аргументе функции загрузчика, как это:
data = LOAD 'data'
USING parquet.pig.ParquetLoader('n1:int, n2:float, n3:double, n4:long')
В противном случае функция загрузчика выводит схема из первого файла, с которым он сталкивается, который затем конфликтует с одним из других.
Если у вас все еще есть проблема, попробуйте использовать тип bytearray
в спецификации схемы, а затем лить в нужные типы в следующем FOREACH
.
В соответствии с Parquet source code есть еще один аргумент функции загрузчика, который позволяет столбцам указывать позицию, а не имя (по умолчанию), но я не экспериментировал с этим.
См. Также http://www.ericlin.me/unable-to-read-parquet-files-with-same-schema-and-different-flags-in-pig –