Apache pig 拼花装料机:can';t使用pig加载多个拼花地板文件
我得到以下错误: 分析过程中出错。重复约束更具限制性:无法将类型必需的二进制MyTime合并到可选的二进制MyTime中。 也许其中一个文件已损坏,但我不知道如何跳过它Apache pig 拼花装料机:can';t使用pig加载多个拼花地板文件,apache-pig,parquet,Apache Pig,Parquet,我得到以下错误: 分析过程中出错。重复约束更具限制性:无法将类型必需的二进制MyTime合并到可选的二进制MyTime中。 也许其中一个文件已损坏,但我不知道如何跳过它 感谢读取多个拼花地板文件时会发生这种情况,这些文件的模式中的元数据略有不同。要么在单个目录中有一个混合的文件集合,要么给LOAD语句一个glob,结果文件集合在这方面是混合的 解决方案不是在AS()子句中指定模式,也不是直接调用加载器函数,而是在加载器函数的参数中重写模式,如下所示: data = LOAD 'data'
感谢读取多个拼花地板文件时会发生这种情况,这些文件的模式中的元数据略有不同。要么在单个目录中有一个混合的文件集合,要么给
LOAD
语句一个glob,结果文件集合在这方面是混合的
解决方案不是在AS()
子句中指定模式,也不是直接调用加载器函数,而是在加载器函数的参数中重写模式,如下所示:
data = LOAD 'data'
USING parquet.pig.ParquetLoader( 'n1:int, n2:float, n3:double, n4:long')
否则,loader函数从它遇到的第一个文件中推断出模式,该文件随后与另一个文件冲突
如果仍有问题,请尝试在架构规范中使用typebytearray
,然后在后续的FOREACH
中转换为所需的类型
根据,loader函数还有另一个参数,允许按位置而不是名称指定列(默认值),但我没有尝试过。另请参见