将xml数据从配置单元表字段移动到另一个配置单元表,该配置单元表创建了行格式serde

7kjnsjlb  于 2021-06-28  发布在  Hive
关注(0)|答案(1)|浏览(336)

需要帮助您了解有关配置单元中xml数据的解决方案。
1) 下面的配置单元表“books\uxml”只包含一个名为“xmldata”的字段,我将xml数据保存为单个字符串。

hive> select xmldata from books_xml;
OK
<?xml version="1.0" encoding="UTF-8"?><catalog><book>  <id>11</id> 
<genre>Computer</genre>  <price>44</price></book><book>  <id>44</id> 
<genre>Fantasy</genre>  <price>5</price></book></catalog>
Time taken: 0.175 seconds, Fetched: 1 row(s)

2) 我想将上面的xml数据(在字段中)导出到下面用serde属性创建的配置单元表中?

CREATE TABLE books_serde (
   id STRING, 
   genre STRING, 
   price DOUBLE
)
ROW FORMAT SERDE 'com.ibm.spss.hive.serde2.xml.XmlSerDe'
WITH SERDEPROPERTIES (
"column.xpath.id"="/book/id/text()",
"column.xpath.genre"="/book/genre/text()",
"column.xpath.price"="/book/price/text()"
)
STORED AS
INPUTFORMAT 'com.ibm.spss.hive.serde2.xml.XmlInputFormat'
OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.IgnoreKeyTextOutputFormat'
TBLPROPERTIES (
"xmlinput.start"="<book>",
"xmlinput.end"="</book>"
);
b4lqfgs4

b4lqfgs41#

将第二个表创建为指向 LOCATION 在第一张table上,

LOCATION /user/hive/warehouse/dbname/books_xml

这也许能解决你的问题。

相关问题