更新:好吧,原來的原因,下面不工作是因爲我使用的InputFormat
API的新版本(import org.apache.hadoop.mapred
這是對老import org.apache.hadoop.mapreduce
這是新)。我的問題是將現有代碼移植到新代碼中。有沒有人有使用舊API編寫多行InputFormat
的經驗?自定義InputFormat與蜂巢
試圖處理Omniture的數據日誌文件用Hadoop /蜂巢。文件格式是製表符分隔的,雖然大部分都很簡單,但它們確實允許您在字段中有多個新的行和選項卡,這些行可以通過反斜槓(\\n
和\\t
)轉義。因此,我選擇創建自己的InputFormat來處理多個換行符,並在Hive嘗試在選項卡上執行拆分時將這些製表符轉換爲空格。我只是嘗試了一些樣本數據加載到在蜂巢表,並得到了以下錯誤:
CREATE TABLE (...)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
STORED AS INPUTFORMAT 'OmnitureDataFileInputFormat' OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.IgnoreKeyTextOutputFormat';
FAILED: Error in semantic analysis: line 1:14 Input Format must implement InputFormat omniture_hit_data
奇怪的是,我的輸入格式並延長org.apache.hadoop.mapreduce.lib.input.TextInputFormat
(https://gist.github.com/4a380409cd1497602906)。
Hive是否要求您擴展org.apache.hadoop.hive.ql.io.HiveInputFormat
而不是?如果是這樣,我是否必須重寫InputFormat和RecordReader的任何現有類代碼,還是隻能改變它正在擴展的類?