8
我試圖在包含兩個Parquet文件的文件夾上創建一個包含模式 string,string,double的Hive表。第一個parquet文件架構是字符串,字符串,雙重,第二個文件的架構是 string,double,string。在Pig中使用配置單元表實現
CREATE EXTERNAL TABLE dynschema (
trans_date string,
currency string,
rate double)
STORED AS PARQUET
LOCATION '/user/impadmin/test/parquet/evolution/';
我想在豬(0.14)腳本中使用配置單元表。
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 Parquet加載器來讀取文件並手動指定應該觸發架構演變的模式。我不確定它是否會對這個具體情況有所幫助,但是由於架構演變似乎很難做到。 – LiMuBei
Avro的情況也是如此嗎? – SaurabhG
不知道如何豬存儲工作。我認爲你也可以手動指定一個模式。 – LiMuBei