2015-05-28 34 views

回答

1

读取在他们的模式略有不同的元数据的多个拼花文件时,会出现这种情况。要么你在一个目录中有混合的文件集合,要么你给这个LOAD声明一个glob,并且在这方面得到的文件集合是混合的。

而不是在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 –

相关问题