我正在尝试在包含两个Parquet文件的文件夹上创建一个带有schema string,string,double 的Hive表。第一个镶木地板文件架构是 string,string,double ,第二个文件的架构是 string,double,string 。
CREATE EXTERNAL TABLE dynschema (
trans_date string,
currency string,
rate double)
STORED AS PARQUET
LOCATION '/user/impadmin/test/parquet/evolution/';
我正在尝试使用pig(0.14)脚本中的hive表。
A = LOAD 'dynschema' USING org.apache.hive.hcatalog.pig.HCatLoader();
DUMP A;
但是我收到了错误
java.lang.UnsupportedOperationException:无法检查org.apache.hadoop.hive.serde2.io.DoubleWritable
我怀疑是由于第二个文件的模式与表模式不同,因为第一个文件的分割已成功读取,但在读取第二个文件的分割时会发生此异常。
我还查看了HCatRecordReader's
代码并找到了这段代码
DefaultHCatRecord dr = new DefaultHCatRecord(outputSchema.size());
int i = 0;
for (String fieldName : outputSchema.getFieldNames()) {
if (dataSchema.getPosition(fieldName) != null) {
dr.set(i, r.get(fieldName, dataSchema));
} else {
dr.set(i, valuesNotInDataCols.get(fieldName));
}
i++;
}
在这里,我看到存在从数据模式到输出模式的转换逻辑,但在调试时,我发现模式中没有任何区别。
请帮我查一下,
Pig支持从具有不同模式的多个镶木地板文件创建的hive表中读取数据的情况。
如果是,请执行此操作。
答案 0 :(得分:1)
如果你有2个不同模式的文件,以下似乎是明智的: