2012-05-14 42 views
0

我是Hadoop/Hive的新手。我正在嘗試使用hive處理xml文件。搜索一段時間後,我遇到了可用於此目的的自定義FileFormat代碼,用於xml文件。使用自定義文件格式讀取配置單元中的xml文件

(這裏是定製xmlinputformat類的源代碼:XmlInputFormat.class

我添加xmlinputformat類罐和創建了一個示例表:

create table person ( 
    name string 
    )   
    ROW FORMAT DELIMITED 
    FIELDS TERMINATED BY '\t'  
    STORED AS INPUTFORMAT 'com.hadoop.xmlparser.XmlInputFormat' 
    OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'; 

我試圖檢索來自數據上述表,並得到了如下錯誤:從org.apache.hadoop.hive.ql.exec.MapRedTask

執行錯誤,返回碼2

繼在JobTracker的日誌中發現的錯誤:

java.lang.RuntimeException: java.lang.reflect.InvocationTargetException 
    at org.apache.hadoop.hive.shims.Hadoop20SShims$CombineFileRecordReader.initNextRecordReader(Hadoop20SShims.java:306) 
    at org.apache.hadoop.hive.shims.Hadoop20SShims$CombineFileRecordReader.<init>(Hadoop20SShims.java:269) 
    at org.apache.hadoop.hive.shims.Hadoop20SShims$CombineFileInputFormatShim.getRecordReader(Hadoop20SShims.java:366) 
    at org.apache.hadoop.hive.ql.io.CombineHiveInputFormat.getRecordReader(CombineHiveInputFormat.java:413) 
    at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:371) 
    at org.apache.hadoop.mapred.MapTask.run(MapTask.java:325) 
    at org.apache.hadoop.mapred.Child$4.run(Child.java:270) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at javax.security.auth.Subject.doAs(Subject.java:396) 
    at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1127) 
    at org.apache.hadoop.mapred.Child.main(Child.java:264) 
Caused by: java.lang.reflect.InvocationTargetException 
    at sun 

爲上述問題的解決方案的任何?謝謝!!

回答

0

我沒有使用這個特殊的InputFormat,但Hive假定記錄由\ n分隔。所以你需要確保你的XML沒有\ n。

相關問題