2017-09-21 5 views
0

J'utilise hivexmlserde-1.0.5.3 pour analyser des données XML dans des tables Hive. Je suis face à un problème quand je suis en train d'analyser les balises qui ont des sauts de ligne en eux, quelque chose comme ceci:Hive XML Serde - Analyse des chaînes avec des sauts de ligne

<item> 
    <itemid>1</itemid> 
    <contents subscript = "n"> 
     <name>Item1</name> 
     <details>Line 1 with a line break. 
     Line 2 here, which is not being read.</details> 
    </contents> 
</item> 

Cette ligne est en train de lire que d'abord quand je suis en train de l'analyser en utilisant les éléments suivants:

DROP TABLE IF EXISTS db.tbl; 
    CREATE EXTERNAL TABLE db.tbl (
     ID STRING COMMENT '', 
     CONTENTS ARRAY<STRUCT< 
     subscript:STRING, 
     contents:struct<Name:STRING,Details:STRING>>> COMMENT '') COMMENT '' 
     ROW FORMAT SERDE 'com.ibm.spss.hive.serde2.xml.XmlSerDe' 
     WITH SERDEPROPERTIES (
     "column.xpath.OB_CASE_ID"="/item/itemID/text()", 
     "column.xpath.HISTORICAL_INTERACTION"= "/item/contents") 
     STORED AS 
     INPUTFORMAT 'com.ibm.spss.hive.serde2.xml.XmlInputFormat' 
     OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat' 
     LOCATION '${stagingFolderPath}' 
     TBLPROPERTIES ("xmlinput.start"="<item>","xmlinput.end"="</item>"); 

Y at-il quelque chose que je fais mal ou existe-t-il une meilleure façon de le faire? Toute aide serait appréciée.

TIA

Répondre

0

je ne pouvais pas trouver un moyen d'analyser les données avec des sauts de ligne en eux. Mais je pourrais supprimer les sauts de ligne des données (ou vous pouvez le remplacer par un marqueur de votre choix). De cette façon, j'ai été capable d'analyser les données comme je l'avais prévu. J'espère que cela t'aides. À votre santé.