xpath—解析xml并存储在配置单元表中

daolsyd0  于 2021-06-21  发布在  Pig
关注(0)|答案(1)|浏览(327)

我使用xpath使用pig解析xml,但是在我的用例中,我必须解析整个xml文件并将其移动到hive表中。我正在考虑使用xpath来解析xml文件,然后使用pig将解析后的数据移动到配置单元表中。但是有没有别的办法呢?

djmepvbi

djmepvbi1#

我们可以使用hivexmlserde解析配置单元中的xml文件。
使用hivexmlserde创建一个外部配置单元表,并将所有xml文件放在该xml位置(所有xml文件都应该类似)。使用这个serde,您需要在create table语句中定义开始和结束标记,以及要获取的属性的xpath。
请看下面的例子。

add jar /home/udf_jars/hivexmlserde-1.0.5.3.jar;
CREATE EXTERNAL TABLE hive_test_xml(
col1            string,
col2            string,
col3            string
)
ROW FORMAT SERDE 'com.ibm.spss.hive.serde2.xml.XmlSerDe'
WITH SERDEPROPERTIES (
"column.xpath.col1"="/Books/col1/text()",
"column.xpath.col2"="/Books/col2/text()",
"column.xpath.col3"="/Books/col3/text()"
)
STORED AS
INPUTFORMAT 'com.ibm.spss.hive.serde2.xml.XmlInputFormat'
OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.IgnoreKeyTextOutputFormat'
LOCATION ' /user/user1/xml/data'
TBLPROPERTIES (
"xmlinput.start"="<Books",
"xmlinput.end"="</Books>");

有关详细信息,请访问配置单元xml选项链接以获取更多信息。
更新:如何从表中选择数据。
你需要添加 hivexmlserde-1.0.5.3.jar 查询前。请看下面的例子。

hive> add jar /path/to/jar/hivexmlserde-1.0.5.3.jar;
Added [add jar /path/to/jar/hivexmlserde-1.0.5.3.jar] to class path
Added resources: [add jar /path/to/jar/hivexmlserde-1.0.5.3.jar]
hive> use mydatabase_name;
OK
Time taken: 0.021 seconds
hive> select * from xm_table;

您还可以永久地设置这个jar,以避免在查询之前一直添加。请点击下面的链接
在配置单元中永久添加/定义jar

相关问题