You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Hive中处理XML文件并提取USERNAME与PASSWORD字段

在Hive中提取XML文件的USERNAME和PASSWORD字段

要处理你提供的XML文件并仅提取USERNAME和PASSWORD字段,我们可以利用Hive的XML SerDe(序列化/反序列化工具)来实现XML数据的解析与字段映射。

首先看你的XML示例:

<?XML version='1.0' ?> 
<DATA> 
  <USER USERNAME="ABC" FIRSTNAME="RAJ" LASTNAME="KUMAR" PASSWORD="123" /> 
  <USER USERNAME="DEF" FIRSTNAME="VENKAT" LASTNAME="BALAJI" PASSWORD="123" /> 
</DATA>

实现步骤与代码

我们需要创建一个Hive表,通过配置XML SerDe来指定如何解析XML中的目标字段:

CREATE TABLE user_xml(
    USERNAME string,
    PASSWORD string
) 
ROW FORMAT SERDE 'com.ibm.spss.hive.serde2.xml.XmlSerDe' 
WITH SERDEPROPERTIES ( 
    "column.xpath.USERNAME"="/DATA/USER/@USERNAME",
    "column.xpath.PASSWORD"="/DATA/USER/@PASSWORD"
) 
STORED AS INPUTFORMAT 'com.ibm.spss.hive.serde2.xml.XmlInputFormat' 
OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.IgnoreKeyTextOutputFormat' 
TBLPROPERTIES (
    "xmlinput.start"="<DATA",
    "xmlinput.end"="</DATA>"
);

关键配置说明

  • XML SerDe选择:com.ibm.spss.hive.serde2.xml.XmlSerDe是Hive中专门用于处理XML数据的工具,它支持通过XPath定位XML中的元素或属性。
  • XPath修正:注意这里的XPath使用@前缀来选取USER标签的属性(原代码中的text()是错误的,因为USERNAME和PASSWORD是标签属性而非文本节点),这样才能正确提取到属性值。
  • 输入范围控制:TBLPROPERTIES中的xmlinput.start和xmlinput.end指定了Hive需要解析的XML根节点范围,确保只处理<DATA>和</DATA>之间的内容,忽略XML声明等无关部分。

建表完成后,执行以下查询即可获取目标字段:

SELECT USERNAME, PASSWORD FROM user_xml;

内容的提问来源于stack exchange,提问作者Kishore

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 07:03:39