Apache pig 拼花装料机:can';t使用pig加载多个拼花地板文件

Apache pig 拼花装料机:can';t使用pig加载多个拼花地板文件,apache-pig,parquet,Apache Pig,Parquet,我得到以下错误: 分析过程中出错。重复约束更具限制性:无法将类型必需的二进制MyTime合并到可选的二进制MyTime中。 也许其中一个文件已损坏,但我不知道如何跳过它 感谢读取多个拼花地板文件时会发生这种情况,这些文件的模式中的元数据略有不同。要么在单个目录中有一个混合的文件集合,要么给LOAD语句一个glob,结果文件集合在这方面是混合的 解决方案不是在AS()子句中指定模式,也不是直接调用加载器函数,而是在加载器函数的参数中重写模式,如下所示: data = LOAD 'data'

我得到以下错误: 分析过程中出错。重复约束更具限制性:无法将类型必需的二进制MyTime合并到可选的二进制MyTime中。 也许其中一个文件已损坏,但我不知道如何跳过它


感谢

读取多个拼花地板文件时会发生这种情况,这些文件的模式中的元数据略有不同。要么在单个目录中有一个混合的文件集合,要么给
LOAD
语句一个glob,结果文件集合在这方面是混合的

解决方案不是在
AS()
子句中指定模式,也不是直接调用加载器函数,而是在加载器函数的参数中重写模式,如下所示:

data = LOAD 'data' 
    USING parquet.pig.ParquetLoader( 'n1:int, n2:float, n3:double, n4:long')
否则,loader函数从它遇到的第一个文件中推断出模式,该文件随后与另一个文件冲突

如果仍有问题,请尝试在架构规范中使用type
bytearray
,然后在后续的
FOREACH
中转换为所需的类型

根据,loader函数还有另一个参数,允许按位置而不是名称指定列(默认值),但我没有尝试过。

另请参见