gpt4 book ai didi

xml - 解析 XML 并存储在 Hive 表中

转载 作者:数据小太阳 更新时间:2023-10-29 02:25:46 27 4
gpt4 key购买 nike

我正在使用 XPath 通过 pig 解析 XML,但在我的用例中我必须解析整个 xml 文件并将其移动到 hive 表。我正在考虑使用 XPath 来解析 XML 文件,而不是使用 pig 将解析后的数据移动到配置单元表。但是有没有其他方法可以做到这一点?

最佳答案

我们可以使用 hivexmlserde 在 Hive 中解析 XML 文件。

使用 hivexmlserde 创建一个外部 Hive 表,并将所有 xml 文件放在该 xml 位置(所有 xml 文件应该相似)。使用此 serde,您需要在创建表语句和要获取的属性的 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>");

更多详细信息,请访问Hive-XML-Options有关更多信息的链接。

更新:如何从表中选择数据。

查询前需要添加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,避免查询前一直添加。请点击以下链接

Adding/Defining Jars in Hive permanently

关于xml - 解析 XML 并存储在 Hive 表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41299994/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com