2011-10-07 50 views
4

更新:好吧,原來的原因,下面不工作是因爲我使用的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.TextInputFormathttps://gist.github.com/4a380409cd1497602906)。

Hive是否要求您擴展org.apache.hadoop.hive.ql.io.HiveInputFormat而不是?如果是這樣,我是否必須重寫InputFormat和RecordReader的任何現有類代碼,還是隻能改變它正在擴展的類?

回答