2015-05-28 37 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 –

相關問題