您的位置 首页 资讯

大数据Hive及正则匹配简介

一、Hive简介 1、定义 1.1 Hive是什么 Hive是基于Hadoop(详见以下延伸概念)的一个数据仓库工具,用来进行数据提取、转化、加载,是一种可以存储、查询和分析存储在…

一、Hive简介
1、定义 1.1 Hive是什么
Hive是基于Hadoop(详见以下延伸概念)的一个数据仓库工具,用来进行数据提取、转化、加载,是一种可以存储、查询和分析存储在Hadoop中的大规模数据的机制。Hive数据仓库工具能将结构化的数据文件映射为一张数据库表,并提供SQL查询功能,能将SQL语句转变成MapReduce任务来执行。
Hive本质:将HQL转换成MapReduce程序,Hive处理的数据存储在HDFS上、交给MapReduce计算数据、执行程序在Yarn上。
1.2 Hive优缺点
wKgaomWOKVuAKqd4AAENjVUxxGY387

1.3 相关概念延伸
Hadoop是Apache软件基金会下一个开源分布式计算平台,以HDFS(Hadoop Distributed File System)、MapReduce(Hadoop2.0加入了YARN,Yarn是资源调度框架,能够细粒度的管理和调度任务,还能够支持其他的计算框架,比如spark)为核心,Hadoop为用户提供了系统底层细节透明的分布式基础架构。
Hadoop主要用于大规模数据集的存储和处理,其3个核心组件功能分别为:
HDFS(Hadoop Distributed File System):HDFS是一个分布式文件系统,可以将大文件切分成多个块进行存储,并将这些块分布在集群中的多个节点上。它所具有的高容错、高可靠性、高可扩展性、高获得性、高吞吐率等特征为海量数据提供了不怕故障的存储,为超大数据集(Large Data Set)的应用处理带来了很多便利。
wKgaomWOKVyARqyRAAItTh82GV4643

MapReduce:MapReduce是一种分布式计算框架,可以将大规模数据集的计算任务划分成多个小的计算任务并行处理,然后将结果合并生成最终的输出结果。
Yarn(Yet Another Resource Negotiator): 是Hadoop集群资源管理系统,可为上层应用提供统一的资源管理和调度,它的引入为集群在利用率、资源统一管理和数据共享等方面带来了巨大好处。
wKgaomWOKVyATegxAANsc5Ynork630

wKgaomWOKVyAcrclAAHiZjf_uWM441

从上面两张图片可以看出MapReduce的计算框架,以及它和HDFS的联系。在Splitting这一步上,首先将HDFS上取下来的数据进行分成多个block,接着在Mapping步骤上对所有block上的数据进行遍历输出,采用(key,value)的形式(这个步骤是在RR(record reader)上实现的),接着在Shuffing步骤上进行各个node上的通信,将(key,value)这种类型的数据,key值相同的放在一起,之后在Reducing步骤上进行聚合,最后输出。这个shuffing步骤包括partition和sort两个小步骤,partition过程将mapping后的数据,按照key值进行分割,接着进行node之间的通信,这里的sort相当于一个排序的过程。
2、Hive基本组成
wKgaomWOKVyAA19_AASTG9tl3xI909

用户接口:包括 CLI、JDBC/ODBC、WebGUI
其中:CLI为shell命令行;JDBC/ODBC是Hive的JAVA实现,与传统数据库JDBC类似;WebGUI是通过浏览器访问Hive。
元数据存储:通常是存储在关系数据库如:mysql , derby中
Hive 将元数据存储在数据库中。Hive 中的元数据包括表的名字,表的列和分区及其属性,表的属性(是否为外部表等),表的数据所在目录等。
解释器、编译器、优化器、执行器
解释器(SQL Parser)、编译器(Compiler)、优化器(Optimizer)完成HQL查询语句从词法分析、语法分析、编译、优化以及查询计划的生成。生成的查询计划存储在 HDFS 中,并在随后由 MapReduce 调用执行。
3、Hive体系结构
Hive是一种底层封装了Hadoop的数据仓库处理工具,使用类SQL的hiveSQL语言实现数据查询,所有Hive的数据都存储在Hadoop兼容的文件系统中。Hive在加载数据过程中不会对数据进行任何的修改,只是将数据移动到HDFS中Hive设定的目录下,因此Hive不支持对数据的改写和添加,所有的数据都是在加载的时候确定的。Hive的设计特点如下:
支持创建索引,优化数据查询。
不同的存储类型,例如,纯文本文件、HBase中的文件。
将元数据保存在关系数据库中,大大减少了在查询过程中执行语义检查的时间。
可以直接使用存储在Hadoop文件系统中的数据。
内置大量用户函数UDF来操作时间、字符串和其他的数据挖掘工具,支持用户扩展UDF函数来完成内置函数无法实现的操作。
类SQL的查询方式,将SQL查询转换为MapReduce的job在Hadoop集群上执行。
4、Hive和关系型数据库区别
Hive与传统关系型数据库有几个主要区别:
首先,Hive是基于Hadoop的数据仓库工具,而传统关系型数据库是基于磁盘上的文件系统;
其次,Hive使用HiveQL查询语言,这是一种类似于SQL的语言,用于定义表、加载数据和执行查询。与此相比,传统关系型数据库使用标准的SQL语言;
最后,Hive适用于处理大规模的结构化和半结构化数据,而传统关系型数据库适用于处理较小规模的结构化数据。
wKgaomWOKV2ACLCgAADUtiseWPs548

二、正则匹配
1、Hive正则表达式概述 正则表达式(Regular Expression,Regex)是一种文本匹配工具,可以用来对字符串进行模式匹配和替换。在Hive中,也可以使用正则表达式来进行数据查询、数据过滤和数据处理等操作。由标准的元字符(metacharacters)所构成,可以用来检查一个字符串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。 正则表达式的目的:对字符串str进行解析,用正则表达式(pattern)进行匹配,并得到我们想要的符合模板pattern的字符串。一个正则表达式通常被称为一个模式(pattern),为用来描述或者匹配一系列匹配某个句法规则的字符串。Hive支持以下三个正则表达式:regexp、regexp_extract、regexp_replace。
1.1 regexp (1)用法
语法:A regexp B
说明:判断一个字符串是否匹配正则表达式,用法和rike一样
(2)示例 判断B是否包含在A中
1.2 regexp_extract (1)用法
语法:regexp_extract(string A, string pattern, int index)
说明:将字符串A按照pattern正则表达式的规则拆分,返回index指定的字符,index从1开始计。
其中还有几个符号与idx需要注意的地方:
小括号( )标记一个子表达式的开始与结束的位置。
0表示把整个正则表达式对应的结果全部返回
(2)示例 返回第一个()对应的结果
1.3 regexp_replace (1)用法
语法:regexp_replace(string A, string B, string C)
返回值:string
说明:将字符串A中的符合正则表达式B的部分替换为C。
(2)示例 把A中符合正则表达式B的部分(这里为You)替换为C(这里为空字符串””)
2、常用的正则表达式符号及含义
2.1 边界集合
字符 描述
^ 每一行的开头,单行模式下等价于字符串的开头
$ 每一行的结尾,单行模式下等价于字符串的结尾
2.2 字符集合
字符 匹配的字符
d 从0-9的任一数字
D 任一非数字字符
w 任一单词字符,包括A-Z,a-z,0-9和下划线
W 任一非单词字符
s 任一空白字符,包括制表符,换行符,回车符,换页符和垂直制表符
S 任一非空白字符
. 任一字符
2.3 重复次数集合
字符 描述
* 匹配前面元字符零次或多次
+ 匹配前面元字符一次或多次
? 匹配前面元字符零次或一次
{m} 匹配 m 次
{m,} 至少匹配 m 次
{m, n} 至少匹配 m 次但不超过 n 次
声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/news/350315.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部