
Hive
文章平均质量分 69
详细介绍Hive的使用方法
只是甲
10年及以上金融信贷、通信行业数据库运维管理、数据仓库及大数据相关工作经验,持有Oracle OCP和Linux RHCE认证证书。
展开
-
大数据开发之Hive案例篇14:某个节点HDFS块比较多
那么此时可以这么理解,当集群处于空闲时,突然来了一个任务,那么此时因为所有container的优先级相同,优先选择的就是本节点的container,而第一个container 用于启动作业的AM进程,这也就对应了之前的,chd10节点申请AM会比其他节点多很多。从图中可以看出,每个节点的HDFS空间是相同的,大多节点HDFS使用量在40%左右,而出问题的这个节点居然直逼80%,鉴于之前问题出现过多次,且每次都是利用空余时间使用HDFS的rebalance进行解决的,此处需要找出具体问题,规避此类问题。原创 2023-06-30 10:27:57 · 1718 阅读 · 0 评论 -
大数据开发之Hive案例篇13:Hive SQL 常见参数调整
hive的一些默认参数设置不适合一些复杂的数据需求场景,需要针对具体情况进行调整。原创 2023-06-14 09:35:50 · 672 阅读 · 0 评论 -
大数据开发之Hive案例篇12:HDFS rebalance 一例
公司的离线数仓是CDH集群,19个节点,HDFS存储空间大约400TB左右,使用量在200TB左右。由于历史遗留的问题,数据仓库需要重构,新旧数仓在一段时间内需要并存,此时HDFS空间救不够了。Kafka出了问题,选主过程受到ZK的影响,导致生产者写的时候找不到主节点,进而导致数据丢失。于是申请增加6个节点,每个节点挂20T的存储,累积给HDFS增加120TB左右空间。(这还是HDFS rebalance执行了一天多的时候的截图)新增加节点与旧节点之间数据分布不均匀。原创 2023-06-13 20:04:14 · 874 阅读 · 0 评论 -
大数据开发之Hive案例篇11: 配置资源队列
公司有一个hadoop的集群。但是A项目组经常做一些定时的BI报表,B项目组则经常使用一些软件做一些临时需求。那么他们肯定会遇到同时提交任务的场景,这个时候到底如何分配资源满足这两个任务呢?是先执行A的任务,再执行B的任务,还是同时跑两个?以Capacity 调度为例。原创 2023-06-08 09:55:00 · 689 阅读 · 0 评论 -
大数据开发之Hive案例篇10-大表笛卡尔积优化
我们需要求每一个start_date的累积数量,那么此时我们可以先求每天的,然后求每天累积的,再求当天每一个start_date累积的,加上前一日的累积的,就是最终我们需要的数据。就算数据量提升数倍,因为 join的条件由一个 data_source 变为了两个 data_souce 、dt,大大减少了笛卡尔积的数据量,整个代码的计算量也减少了许多。同样的逻辑,表连接的方式居然就可以了,而分析函数却不行,估计一个是写内存,一个是写磁盘把。将数据倾斜严重的数据,单独拿出来执行。最终的运行时间在5分钟左右。原创 2023-06-07 09:53:56 · 1841 阅读 · 1 评论 -
大数据开发之Hive案例篇9-Not yet supported place for UDAF ‘count‘
后面把order by子句注释掉之后,居然就可以了,那么就是order by 后面不能跟聚合函数了。一个很简单的group by和count(*) 操作,然后居然报错了。大概是在Oracle MySQL上写SQL写习惯了,以为可以这么写。于是使用了聚合函数的别名,问题搞定。出了问题也是不知道从何排查。原创 2023-06-05 10:36:11 · 2520 阅读 · 0 评论 -
大数据开发之Hive案例篇8-解析XML
因为Hive不支持XML数据格式,后端写入数据库存的是一个String类型,此时格式就没那么规范了,会有一些特殊字符。遇到不懂的问题,首先上官方文档查询相关文档,然后照着官网的demo改改,一般就能解决问题了。今天接到一个新需求,hive表里面有个字段存储的是XML类型数据。丰富的XML相关函数及测试用例。原创 2023-05-26 09:58:29 · 975 阅读 · 0 评论 -
大数据开发之Hive案例篇7- 笛卡尔积优化一例
这种非等值连接,不能写在on子句,只能写在where子句后面,那么此时的问题就是连个表的关联变成笛卡尔积了,产生的数据量太大了,而且笛卡尔积是全局的,所以只有一个reduce,执行进程上看,reduce进度一直卡在99%不动。那么此时我们需要的是人工的给两个表一个join条件,避免只有一个reduce操作。顺便指定一下reduce的个数,以免hive自动判断的reduce数发生错误。今天遇到一个问题,一个大表join 一个拉链表,获取对应的数据。优化后,执行时间由之前的18分钟,优化到4分钟左右。原创 2023-05-25 09:39:39 · 912 阅读 · 0 评论 -
大数据开发之Hive案例篇6- MR任务shuffle过程中失败
今天跑一个MR任务,数据量不大,跑了半个小时左右,遇到了超时的报错。原创 2023-05-25 09:37:43 · 301 阅读 · 0 评论 -
大数据开发之Hive案例篇5- count(distinct) 优化一例
因为本身是离线数据,此时可以借助临时表,首先把每个用户首次访问的时间记录下来,这样就可以将处理的数据大大减少,最后再通过开窗函数处理即可。一般一个reduce处理的数据是1G,所以首先想能不能增加reduce的个数来调优上述Hive SQL。SQL也是因为 count(distinct)的存在,导致reduce数分配少了,进而出现数据性能问题。上述SQL所代表的业务逻辑是求截止当前每分钟的用户访问数(如出现多次,只算一次)经验证,调整了上述参数后,问题依旧没有得到解决。原创 2023-05-24 10:03:42 · 441 阅读 · 0 评论 -
大数据开发之Hive案例篇4-Map数过少导致性能低下
大数据 Hive 非等值连接 Map数过少 参数调整原创 2022-10-20 10:54:04 · 615 阅读 · 0 评论 -
大数据开发之Hive案例篇3-sqoop导入到hive的大文件
大数据开发 hive 小文件原创 2022-10-14 10:10:43 · 1041 阅读 · 0 评论 -
大数据开发之Hive案例篇2-hive复合类型array处理
hive 处理array数据原创 2022-06-10 16:50:48 · 598 阅读 · 0 评论 -
DBeaver连接Hive
文章目录一.DBeaver 安装二.连接hive使用hive进行数据开发过程中,也可以用图形化界面来进行开发,此处讲解DBeaver连接Hive一.DBeaver 安装下载地址:https://dbeaver.io/download/因为我下载的免安装版,所以解压后,直接点击dbeaver.exe就可以使用了!二.连接hive文件->新建选择apache hive主机名称: hive server2所在的主机名数据库 : 需要登录的数据库端口号 : 默认为原创 2022-02-10 14:23:49 · 1840 阅读 · 0 评论 -
大数据开发之Hive案例篇1-Hive表中文注释乱码
备注:Hive 版本 2.1.1MySQL 版本 5.6.49文章目录一.问题描述二.解决方案三.更改hive整个数据库的字符集3.1 备份hive数据库3.2 替换备份文件3.3 替换字符集一.问题描述创建表备注中文显示乱码hive> create table t1 (id int comment 'id',name string comment "名字",login_date timestamp comment "登陆时间") comment "登陆日志表" stored as tex原创 2022-02-09 16:48:22 · 1660 阅读 · 0 评论 -
Java操作Hive系列1-Hive UDF
文章目录一.创建Hive工程1.1 新建Java工程1.2 将Hive的lib下所有jar包放到lib目录下1.3 导入hadoop-common jar包1.4 将jar包添加到工程二.编写java代码并打包三. 注册UDF3.1 上传上一步的jar文件到服务器3.2 注册UDF3.3 Hive UDF测试3.4 创建永久性的函数一.创建Hive工程1.1 新建Java工程我们这里为了简单就不用Maven了,而是直接使用lib包并把我们需要的jar包放到lib当中。如下所示。(lib这个目录是手原创 2021-07-26 15:47:07 · 4753 阅读 · 2 评论 -
大数据开发之Hive优化篇8-Hive Job优化
备注:Hive 版本 2.1.1文章目录Hive job优化概述一.并行执行二.本地执行三.合并输入小文件四.合并输出小文件五.控制Map/Reduce数5.1 控制Hive job中的map数5.1.1 合并小文件,减小map数5.1.2 适当增加map数5.2 控制hive任务的reduce数参考Hive job优化概述实际开发过程中,经常会遇到hive sql运行比较慢的情况,这个时候查看job的信息,也是一直在运行,只是迟迟的不出结果。可以从如下几个方面来优化hive sql的job:原创 2021-06-17 14:05:03 · 9569 阅读 · 2 评论 -
大数据开发之Hive优化篇7-Hive的压缩
备注:Hive 版本 2.1.1文章目录一.Hive压缩概述1.1 常见压缩算法比较1.2 开启压缩二.压缩测试2.1 测试Orc文件压缩格式2.2 textfile文件格式测试参考:一.Hive压缩概述一般在hadoop集群上运行一个MapReduce会有以下步骤:input-> Map-> shuffle -> reduce -> output如果我们采用了数据压缩,在map阶段产生的数据大小就会减少,会减少磁盘的IO,同时还能够减少网络的IO。1.1 常见压缩算法原创 2021-06-16 14:31:32 · 8020 阅读 · 4 评论 -
大数据开发之Hive优化篇6-Hive on spark
备注:Hive 版本 2.1.1一.Hive on Spark介绍Hive是基于Hadoop平台的数据仓库,最初由Facebook开发,在经过多年发展之后,已经成为Hadoop事实上的SQL引擎标准。相较于其他诸如Impala、Shark(SparkSQL的前身)等引擎而言,Hive拥有更为广泛的用户基础以及对SQL语法更全面的支持。Hive最初的计算引擎为MapReduce,受限于其自身的Map+Reduce计算模式,以及不够充分的内存利用,MapReduce的性能难以得到提升。Hortonwor原创 2021-06-15 16:27:51 · 7228 阅读 · 5 评论 -
大数据开发之Hive面试题2-跨行两两分组相加
测试代码:create table test_20210402(gname varchar(20),amt decimal(10,2)); insert into test_20210402 values ('A',1),('B',2),('C',3),('D',4),('E',5),('F',6);一.需求有这么一张 game 表…想求 两两分组 三三分组 四四分组 时, AMT之和两两一组 AB,(1+2) AC,(1+3)..... BC,(2+3)....原创 2021-04-06 10:14:55 · 932 阅读 · 1 评论 -
大数据开发之Hive优化篇5-使用ORC文件格式优化Hive
备注:Hive 版本 2.1.1文章目录一.ORC文件格式概述二.测试ORC性能2.1 查看两个表存储空间的大小2.2 测试查询性能三.ORC相关参数参考如果使用Hive作为大数据仓库,强烈建议主要使用ORC文件格式作为表的存储格式一.ORC文件格式概述ORC (Optimized Row Columnar)文件格式为Hive数据提供了一种高效的存储方式。它的设计是为了克服其他Hive文件格式的限制。使用ORC文件可以提高Hive读写和处理数据时的性能。例如,与RCFile格式相比,ORC文件格原创 2021-01-25 09:58:51 · 2828 阅读 · 0 评论 -
大数据开发之Hive优化篇4-Hive的数据抽样-Sampling
备注:Hive 版本 2.1.1文章目录抽样概述一.随机抽样二.桶表抽样三.数据块抽样参考抽样概述当数据量特别大时,对全体数据进行处理存在困难时,抽样就显得尤其重要了。抽样可以从被抽取的数据中估计和推断出整体的特性,是科学实验、质量检验、社会调查普遍采用的一种经济有效的工作和研究方法。Hive中,数据抽样分为以下三种:随机抽样桶表抽样块抽样一.随机抽样Hive有个随机函数rand(),我们可以通过rand()函数对表进行抽样,然后用limit子句进行限制抽样数据的返回。其中rand原创 2021-01-22 09:21:31 · 1123 阅读 · 0 评论 -
大数据开发之Hive优化篇3-Hive的统计信息
备注:Hive 版本 2.1.1文章目录一.Hive统计信息概述1.1 表和分区的统计信息1.2 列的统计信息1.3 Top K 统计信息二.Hive 统计信息收集方法三.查看表和列的统计信息3.1 desc命令查看统计信息3.2 从元数据查看hive表统计信息参考一.Hive统计信息概述统计数据,比如表或分区的行数和特定列的直方图,在很多方面都很重要。统计数据的一个关键用例是查询优化。统计数据作为成本函数的输入,使优化器可以比较不同的方案并进行选择。统计数据有时可以满足用户查询的目的。用户可以通过原创 2021-01-21 14:22:09 · 2096 阅读 · 1 评论 -
大数据开发之Hive优化篇2-Hive的explain命令
备注:Hive 版本 2.1.1文章目录一.Hive explain命令概述二.Hive explain 案例参考:一.Hive explain命令概述Hive的explain命令用来看Hive sql的执行计划,通过分析执行计划来达到优化Hive sql的目的。语法:EXPLAIN [EXTENDED|CBO|AST|DEPENDENCY|AUTHORIZATION|LOCKS|VECTORIZATION|ANALYZE] queryHive查询被转换成一个阶段序列(它更像是一个有向非循环原创 2021-01-20 09:32:18 · 1429 阅读 · 0 评论 -
大数据开发之Hive优化篇1-Hive 优化概述
备注:Hive 版本 2.1.1文章目录一.Hive的实现原理二Hive优化2.1 选择合理的存储格式和压缩格式2.2 MR Job优化2.3 Join优化2.3.1 MapJoin 优化2.3.2 SMB Join 优化2.4 数据倾斜2.5 Hive的优化配置参数一.Hive的实现原理Hive的编译器将HQL转换成一组操作符(Operator)操作符是Hive的最小处理单元每个操作符代表一道HDFS操作或者MR Job 作业Hive的操作符Hive编译器Parser:将SQL转换原创 2021-01-19 09:41:28 · 846 阅读 · 4 评论 -
大数据开发之Hive篇20-Hive的高级特性
备注:Hive 版本 2.1.1文章目录一.Hive ACID and Transactions二.Hive on Tez三. Hive on Spark四.HCatalog参考这个blog介绍Hive的高级特性1) Hive ACID and Transactions2) Hive on Tez3) Hive on Spark4) HCatalog一.Hive ACID and TransactionsHive 0.14版本开始支持ACID历史版本:一次写入,多次分析查询的场景(H原创 2021-01-18 09:40:57 · 3478 阅读 · 10 评论 -
大数据开发之Hive篇19-Hive分区表详解
备注:Hive 版本 2.1.1文章目录一.Hive分区表概述二.静态分区2.1 单分区测试2.2 多分区测试三.动态分区3.1 动态分区测试3.2 动态分区和静态分区混合使用四.分区的其它操作4.1 恢复分区4.2 归档分区4.3 交换分区参考一.Hive分区表概述数据分区的概念以及存在很久了,通常使用分区来水平分散压力,将数据从物理上移到和使用最频繁的用户更近的地方,以及实现其目的。原创 2021-01-15 09:23:11 · 2061 阅读 · 3 评论 -
大数据开发之Hive篇18-Hive的回收站
备注:Hive 版本 2.1.1一.模拟误删表误删除了这张表hive> > drop table ods_fact_sale_orc;OK二.从回收站恢复表查看回收表[root@hp1 ~]# hadoop fs -ls /user/root/.Trash/Current/user/hive/warehouse/test.dbFound 2 itemsdrwxrwxrwt - root hive 0 2020-12-02 19:18 /use原创 2021-01-14 11:06:17 · 4142 阅读 · 7 评论 -
大数据开发之Hive面试题1-根据分隔符进行分组
备注:Hive 版本 2.1.1文章目录一.题目要求二.解决方案2.1 通过lag函数打标记2.2 省略lag函数直接通过标记sum汇总2.3 通过id与row_number()求差值一.题目要求题目要求如下图所示:二.解决方案测试数据:create table test_1 (id int,name string);insert into test_1 (id,name) values (1,'/'),(2,'A'),(3,'B'),(4,'C'),(5,'/'),(6,'D'),(7原创 2021-01-13 12:03:00 · 862 阅读 · 2 评论 -
大数据开发之Hive篇17-Hive锁机制
备注:Hive 版本 2.1.1文章目录一.Hive锁概述二.Hive 锁相关操作2.1 Hive的并发性2.2 查看表的锁2.3 解锁三.Hive 事务表锁机制四.Hive 锁测试参考:一.Hive锁概述Hive支持如下两种类型的锁:1.Shared (S)2.Exclusive (X)顾名思义,可以同时获取多个共享锁,而X锁阻塞所有其他锁。兼容性矩阵如下:对于某些操作,锁本质上是分层的——例如,对于某些分区操作,表也是锁定的(以确保在创建新分区时表不会被删除)。获取锁模式背后的理性原创 2021-01-13 09:28:14 · 5012 阅读 · 8 评论 -
大数据开发之Hive篇16-Hive的事务介绍
备注:Hive 版本 2.1.1文章目录一.Hive事务简介1.1 为什么要支持ACID1.2 hive事务的限制二.Hive 事务表测试2.1 修改配置文件2.2 重启hive服务2.3 验证acid参考一.Hive事务简介1.1 为什么要支持ACID事务的四个属性:1.原子性(Atomic)(Atomicity)事务必须是原子工作单元;对于其数据修改,要么全都执行,要么全都不执行。通常,与某个事务关联的操作具有共同的目标,并且是相互依赖的。如果系统只执行这些操作的一个子集,则可能会破坏事务原创 2021-01-11 09:49:30 · 1453 阅读 · 2 评论 -
大数据开发之Hive篇15-Hive之hpl/sql编程
备注:Hive 版本 2.1.1文章目录一. HPL/SQL概述二.HPL/SQL测试案例2.1 测试执行简单sql2.2 测试函数和循环2.3 测试include套用存储过程2.4 测试package2.4 测试游标2.5 测试游标2参考一. HPL/SQL概述Hive 2.0版本开始,已经有了Hive存储过程的解决方案(HPL/SQL –Procedural SQL on hadoop)。该解决方案不仅支持Hive,还支持在SparkSQL,其他NoSQL,甚至是RDBMS中使用类似于Oracl原创 2021-01-08 09:15:44 · 3488 阅读 · 10 评论 -
大数据开发之Hive篇14-Hive归档(Archiving)
备注:Hive 版本 2.1.1文章目录一.Hive归档简介二.Hive 归档操作参考一.Hive归档简介由于HDFS的设计,文件系统中的文件数量直接影响namenode中的内存消耗。虽然对于小型集群来说通常不是问题,但当有5000w -1亿个文件时,单个机器上的内存使用可能会达到可访问内存的极限。在这种情况下,尽可能少的文件是有利的。使用Hadoop Archives是减少分区中文件数量的一种方法。Hive内置了将现有分区中的文件转换为Hadoop Archive (HAR)的支持,这样一个曾经原创 2021-01-07 09:51:18 · 2380 阅读 · 5 评论 -
大数据开发之Hive篇13-Hive的索引
备注:Hive 版本 2.1.1文章目录一.Hive索引简介二.Hive 索引案例2.1 索引语法2.2 索引相关操作2.3 创建索引案例2.4 使用索引案例一.Hive索引简介Hive索引的目标是提高对表的某些列进行查询查找的速度。如果没有索引,则使用类似于“WHERE tab1.col1 = 10”这样的谓词进行查询’加载整个表或分区并处理所有行。但是如果col1存在索引,那么只需要加载和处理文件的一部分。索引所能提供的查询速度的提高是以创建索引和存储索引的磁盘空间的额外处理为代价的。Hiv原创 2021-01-06 09:20:00 · 2704 阅读 · 2 评论 -
大数据开发之Hive篇12-Hive正则表达式
备注:Hive 版本 2.1.1文章目录一.Hive 正则表达式概述1.1 字符集合:1.2 边界集合:1.3 重复次数集合:1.4 组合操作符:1.5 匹配操作符:1.6 转义操作符:二.Hive 正则表达式案例2.1 regexp2.2 regexp_replace2.2.1 截取字符串中汉字部分2.2.2 截取字符串中数字部分2.2.3 截取字符串中字母部分2.2.4 截取字符串中的大小写字母和数字2.3 regexp_extract参考:一.Hive 正则表达式概述Hive的正则表达式虽然没原创 2021-01-05 09:29:24 · 2621 阅读 · 3 评论 -
大数据开发之Hive篇11-Hive分析函数及窗口语句
备注:Hive 版本 2.1.1文章目录一.row_number、rank、dense_rank二.lag、lead三.first_value、last_value四.percent_rank、CUME_DIST五.ntile参考测试数据-- create tablecreate table dept( deptno int, dname varchar(14), loc varchar(13));insert into dept(deptno, dname, loc)原创 2021-01-04 13:41:08 · 909 阅读 · 1 评论 -
大数据开发之Hive篇10-Hive查询with语句
备注:Hive 版本 2.1.1文章目录一.Hive with语句概述二.Hive with语句测试案例测试数据-- create tablecreate table dept( deptno int, dname varchar(14), loc varchar(13));insert into dept(deptno, dname, loc)values ('10', 'accounting', 'new york');insert into dept(dep原创 2020-12-31 09:22:37 · 2560 阅读 · 1 评论 -
大数据开发之Hive篇9-Hive宏(Macro)
备注:Hive 版本 2.1.1文章目录一.Hive宏介绍二.Hive 宏案例2.1 数据准备2.2 case when实现2.3 Hive宏实现参考:一.Hive宏介绍在编写HQL的过程中,很多逻辑需要反复使用。在关系型函数中,可以通过自定义函数来实现,Hive中实现的方法有多种。1) Hive 宏2) Hive hpl/sql3) Hive UDF这里,我们介绍实现最简单的一种Hive 宏。语法:-- 创建宏CREATE TEMPORARY MACRO macro_name([co原创 2020-12-30 09:58:37 · 1963 阅读 · 1 评论 -
大数据开发之Hive篇8-Hive视图
备注:Hive 版本 2.1.1文章目录一.Hive视图介绍二.视图案例2.1 视图能够简化用户内的操作2.2 视图使用户能以多种角度看待同一数据2.3 视图对重构数据库提供了一定程度的逻辑独立性前言:视图是从一个或几个基本表导出的表。视图本身不独立存储在数据库中,是一个虚表。即数据库中只存放视图的定义而不存放视图对应的数据,这些数据仍存放在导出视图的基本表中。视图在概念上与基本表等同,用户可以如同基本表那样使用视图,可以在视图上再定义视图。引进VIEW的优点有:(1)视图能够简化用户内的操原创 2020-12-29 15:12:22 · 2332 阅读 · 3 评论 -
大数据开发之Hive篇7-Hive临时表
备注:Hive 版本 2.1.1一.Hive临时表介绍作为临时表创建的表将只对当前会话可见。数据将存储在用户的scratch目录中,并在会话结束时删除。如果用数据库中已经存在的永久表的数据库/表名创建了一个临时表,那么在该会话中,对该表的任何引用都将解析为临时表,而不是永久表。如果不删除临时表或将其重命名为不冲突的名称,用户将无法在该会话中访问原始表。临时表存在如下限制:不支持分区列不支持创建索引Hive的临时表在数据加载的过程中会频繁使用到,对于复杂的业务逻辑,可以将数据先存储在临时表原创 2020-12-28 13:41:30 · 12303 阅读 · 3 评论