2017-08-14 11 views
0

現在、hive-serdeを使用してXMLファイルをハイブにロードする際にいくつかの問題が発生しています。私はここのヒントに従ったが、xmlファイル経由でハイブにロードしていたデータを読み込もうとしているときに、ヌルポインタの例外を受けている。以下のSQLは、問題はここXMLをHiveにロードする際のヌルポインタ例外

を発生することを表から読み取るしようとすると、いくつかのダミーの値

<?xml version="1.0"?><History-Group-Comm-CommB-DT-RBB-Work 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
    <item id="HISTORY_6_GMT"> 
    <pxAddedByID>HUBINT</pxAddedByID> 
    <pxAddedBySystem>CD</pxAddedBySystem> 
    <pxHistoryForReference>GR</pxHistoryForReference> 
    <pxInsName>GMT</pxInsName> 
    <pxObjClass>Work</pxObjClass> 
    <pxTimeCreated>2017-02-13T13:08:28.776Z</pxTimeCreated> 
    <pyFlowKey>RULE-OBJ</pyFlowKey> 
    <pyFlowName>pyStartCase</pyFlowName> 
    <pyFlowType>pyStartCase</pyFlowType> 
    <pyMessageKey>ItemCreated</pyMessageKey> 
    <pyPerformer>HUB</pyPerformer> 
    <pzInsKey>776 GMT</pzInsKey> 
    </item> 

とxmlですと

は、次のようにXMLをロードするSQLがある場合にのみ、それが正常に動作しますこのヌルポインタ例外が発生している理由として
add jar hdfs://DEVHDPVM01HA:8020/HADOOP/DASD_ACQ/common/lib/hivexmlserde-1.0.5.3.jar; 


    DROP TABLE IF EXISTS test.test_tbl_stg; 
    CREATE EXTERNAL TABLE test.test_tbl_stg (
    ADDED_BY_ID STRING COMMENT 'pxAddedByID', 
    ADDED_BY_SYSTEM STRING COMMENT 'pxAddedBySystem', 
    HISTORY_FOR_REFERENCE STRING COMMENT '', 
    INSERT_NAME STRING COMMENT '', 
    OBJECT_CLASS STRING COMMENT '', 
    TIME_CREATED STRING COMMENT '', 
    FLOW_KEY STRING COMMENT '', 
    FLOW_NAME STRING COMMENT '', 
    FLOW_TYPE FLOAT COMMENT '', 
    MESSAGE STRING COMMENT '', 
    PERFORMER STRING COMMENT '', 
    INSERT_KEY STRING COMMENT '') COMMENT 'Optional Table Comment' 
    ROW FORMAT SERDE 'com.ibm.spss.hive.serde2.xml.XmlSerDe' 
    WITH SERDEPROPERTIES (
    "column.xpath.ADDED_BY_ID"="/item/pxAddedByID/text()", 
    "column.xpath.ADDED_BY_SYSTEM"="/item/pxAddedBySystem/text()", 
    "column.xpath.HISTORY_FOR_REFERENCE"="/item/pxHistoryForReference/text()", 
    "column.xpath.INSERT_NAME"="/item/pxInsName/text()", 
    "column.xpath.OBJECT_CLASS"="/item/pxObjClass/text()", 
    "column.xpath.TIME_CREATED"="/item/pxTimeCreated/text()", 
    "column.xpath.FLOW_KEY"="/item/pyFlowKey/text()", 
    "column.xpath.FLOW_NAME"="/item/pyFlowName/text()", 
    "column.xpath.FLOW_TYPE"="/item/pyFlowType/text()", 
    "column.xpath.MESSAGE"="/item/pyMessageKey/text()", 
    "column.xpath.PERFORMER"="/item/pyPerformer/text()", 
    "column.xpath.INSERT_KEY"="/item/pzInsKey/text()") 
    STORED AS 
    INPUTFORMAT 'com.ibm.spss.hive.serde2.xml.XmlInputFormat' 
    OUTPUTFORMAT 
    'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat' 
    LOCATION '${stagingFolderPath}' 
    TBLPROPERTIES ("xmlinput.start"="<item id=","xmlinput.end"="</item>"); 

任意の提案を大幅

答えて

1

このフィールドのデータ型の変換を理解しています3210 FLOW_TYPEフロートCOMMENT「」 FLOW_TYPE へのコメント文字列「」、理由変換の

私はあなたがあなたが絶対的に正しい、多くのおかげでした

+0

この問題に直面していると思います。 HiveでXMLファイルを処理するときに受け入れる詳細フィールドの種類のリストがどこかにありますか – DPEZ