Hive XML Serde - 使用换行符解析字符串

时间:2017-09-21 05:59:34

标签: xml hadoop hive hiveql hive-serde

我使用hivexmlserde-1.0.5.3将XML数据解析为Hive表。当我尝试解析其中包含换行符的标记时,我遇到了一个问题,如下所示:

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

当我尝试使用以下内容解析它时,这只是读取第一行:

    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>");

有什么我做错了或者有更好的方法吗?任何帮助将不胜感激。

TIA

1 个答案:

答案 0 :(得分:0)

我无法通过其中的换行符找到解析数据的方法。但我可以从数据中删除换行符(或者您可以用自己的某个标记替换它)。这样我就能像我预期的那样解析数据。希望这可以帮助。欢呼声。