2012-05-14 19 views
0

私はHadoop/Hiveを初めて使用しています。私はハイブでxmlファイルを処理しようとしています。しばらくの間、グーグルでは、私は目的のために使用することができますXMLファイルのカスタムFileFormatのコードを発見しました。私はからデータを取得しようとしたカスタムファイル形式を使用してハイブ内のxmlファイルを読む

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'; 

(ここではカスタムxmlinputformatクラスのソースコードです:としてXmlInputFormat.class

私はxmlinputformatクラスのjarファイルを追加し、サンプルテーブルを作成しテーブルの上と、次のエラーました: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がないことを確認する必要があります。

関連する問題