我正在使用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
最佳答案
我找不到一种方法来解析带有换行符的数据。但是我可以从数据中删除换行符(或者可以用自己的标记替换它)。这样,我就能按预期解析数据。希望这可以帮助。干杯。
关于xml - Hive XML Serde-解析带换行符的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46336468/