大数据开发之Hive案例篇8-解析XML

news/2024/11/28 8:29:16/

文章目录

  • 一. 问题描述
  • 二. 解决方案
    • 2.1 官方文档
    • 2.2 XML格式不规范

一. 问题描述

今天接到一个新需求,hive表里面有个字段存储的是XML类型数据

数据格式:

<a><b>bb</b><c>cc</c>
</a>

二. 解决方案

2.1 官方文档

遇到不懂的问题,首先上官方文档查询相关文档,然后照着官网的demo改改,一般就能解决问题了

官方文档地址:
https://cwiki.apache.org/confluence/display/Hive/LanguageManual+XPathUDF
丰富的XML相关函数及测试用例

代码:

-- 求路径 a/b下面的值
SELECT xpath_string ('<a><b>bb</b><c>cc</c></a>', 'a/b') LIMIT 1 ;

测试记录:

hive> > SELECT xpath_string ('<a><b>bb</b><c>cc</c></a>', 'a/b') LIMIT 1 ;
OK
bb
Time taken: 1.477 seconds, Fetched: 1 row(s)
hive> 

2.2 XML格式不规范

因为Hive不支持XML数据格式,后端写入数据库存的是一个String类型,此时格式就没那么规范了,会有一些特殊字符

解析xml报错,原来是有特殊字符
https://stackoverflow.com/questions/730133/what-are-invalid-characters-in-xml

xml不符合规范的字符
https://blog.csdn.net/u014589856/article/details/107151252
image.png

通过正则表达式删除特殊字符:

  1. 下面几个是常用的特殊字符
@&$#%
regexp_replace(the_gifts,'[@&$#%]','')
  1. 只保留 大小写字母 数字 及中文 以及 xml标签
regexp_replace(the_gifts,'(^[a-z]+|[A-Z]+|[0-9]+|[\\u4E00-\\u9FA5]+[</>])','')

http://www.ppmy.cn/news/88408.html

相关文章

数据库概述

文章目录 基本概念一、数据1.定义2.分类 二、数据库1.定义2.三个基本特点&#xff1a; 三、数据库管理系统(DBMS)1.定义2.功能3.特色 四、数据管理技术的产生和发展1.人工管理阶段&#xff1a;2.文件系统阶段3.数据库系统阶段 五、数据库系统的特点1.数据结构化2.数据的共享性高…

什么是DRTP?在证券行业的应用?

一、概念 DRTP是指分布式实时处理&#xff08;Distributed Real-Time Processing&#xff09;&#xff0c;是一种处理实时数据的技术。它通过将数据分散到多个节点上进行处理&#xff0c;从而实现高效的实时数据处理。DRTP通常用于处理大规模的数据流&#xff0c;例如网络流量…

Python pathlib模块

pathlib 模块提供了表示文件系统路径的类&#xff0c;可适用于不同的操作系统。使用 pathlib 模块&#xff0c;相比于 os 模块可以写出更简洁&#xff0c;易读的代码。pathlib 模块中的 Path 类继承自 PurePath&#xff0c;对 PurePath 中的部分方法进行了重载&#xff0c;相比…

RESTful接口设计规范

RESTful是目前最流行的API设计规范&#xff0c;它是用于Web数据接口的设计。从字面可以看出&#xff0c;他是Rest式的接口&#xff0c;所以我们先了解下什么是Rest。 REST与技术无关&#xff0c;它代表的是一种软件架构风格&#xff0c;REST它是 Representational State Trans…

【leetcode】Find Median From Data Stream

参考资料&#xff1a;左神算法课《剑指offer》 295. Find Median from Data Stream The median is the middle value in an ordered integer list. If the size of the list is even, there is no middle value, and the median is the mean of the two middle values. For ex…

【C++初阶】动态内存管理

一.C内存分布 说明&#xff1a; 1. 栈又叫堆栈--非静态局部变量/函数参数/返回值等等&#xff0c;栈是向下增长的&#xff1b; 2. 内存映射段是高效的I/O映射方式&#xff0c;用于装载一个共享的动态内存库。用户可使用系统接口 创建共享共享内存&#xff0c;做进程间通信&…

H-THNSJ0A温湿度传感器标准modbus 通讯协议

1、 概述 1&#xff0e;1 引言 通讯规约详细描述了本机通讯的读、写命令格式及信息和数据的定义&#xff0c;以便第三方开发使用。 1. 2 电气特点及符合标准 1) 连接上位机的主通信接口&#xff0c;MODUBS RTU 协议标准。 2) 信息传输方式为异步方式&#xff0c;字节格式为…

Leetcode 221. 最大正方形

Leetcode 221. 最大正方形题目 在一个由 ‘0’ 和 ‘1’ 组成的二维矩阵内&#xff0c;找到只包含 ‘1’ 的最大正方形&#xff0c;并返回其面积。m matrix.lengthn matrix[i].length1 < m, n < 300matrix[i][j] 为 ‘0’ 或 ‘1’ 解法 动态规划状态压缩&#xff1a;定…