2011-10-07 79 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的任何现有类代码,还是只能改变它正在扩展的类?

回答