
大数据Hive技术
Hive研发
尘世壹俗人
希望我的内容能够帮助更多人,一般我发出来的都是经过自己验证或者自身在用的内容,能躺的坑已经躺完了,也欢迎大家私聊我探讨问题,加班太多回复可能不太及时
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
HDFS和Hive二次改造字段级权限管控能力
hive+hadoop字段级鉴权改造原创 2025-06-23 19:05:23 · 1173 阅读 · 0 评论 -
查看hive表结构
查看hive表结构。原创 2025-01-21 17:11:16 · 217 阅读 · 0 评论 -
hive表修改字段类型没有级连导致历史分区报错
指字段的最新状态,默认只对往后的分区数据生效,而之前的分区保留历史元数据状态。好处就是修改语句的效率很快,坏处就是如果历史分区的数据还有用,那就回发生分区元数据和表元数据的不一致报错。1、如果你改的是一个全量表,此时没有级联的概念,你的修改最多的会导致数据改动时引擎发现已有数据类型和你要改的类型不一样,说白了就是无论做任何修改都要保证元数据的一致性。二:想要避免这样的问题,那元数据正确的改动方法,应该是使用hive的客户端,运行修改语句时,带上级连关键字CASCADE,如新增一个字段。原创 2025-01-16 15:52:43 · 581 阅读 · 0 评论 -
Hive3.x之前推测执行有很低的概率会导致结果数据出现多份
hive的默认走MR,所以会生成很多落盘的task结果文件,而对于推测执行所生成的重复结果,hive在最后会对文件放到表路径下之前,按照任务id和文件大小对文件进行去重,但是apache版本下有极低的概率会因为任务运行时的集群限速等极端情况导致推测执行的结果文件生成在了去重之后,这就会导致结果查询会发现出现了重复。对于hive数据处理的时候,如果一个任务很大或者其他原因导致任务执行受到了限速、失败等影响,这个时候为了让任务稳定,我们常用的手段就是开启推测执行,但是推测执行在3.x之前有个问题,先看下图。原创 2024-12-03 16:34:50 · 249 阅读 · 0 评论 -
Hive高可用配置
在hive的商用上没有集群一说,而且它本身也不是数据库,只是hadoop的数据sql化工具,但是hive可以配置高可用,通常业内对元数据服务会开5个,而HS2服务开3个,来保证hive服务的高可用。当然上面这个命令还是能用的,只是但和直接访问一个namenode的9000端口一样,是直接访问一个定死的服务,而高可用的连接路径需要使用如下格式。随后将hive整体同步到高可用服务对应的节点上,并在对应的节点上,使用下面的命令启动对应的服务。格式,即使你指定连接的库也要在末尾有一个斜杠。原创 2024-11-30 17:27:41 · 678 阅读 · 0 评论 -
hive表内外表之间切换
你想把内表和外表在元数据上达到切换的目的,这个操作有个前提,在apache版本源码上来讲是支持的!上面是把外表切换为内表,反之一样,在源码里面其实还支持很多东西,有兴趣可以看看,博主在源码中还看到sparksql能和presto那样在group by后面写阿拉伯数字代替select后面的字段,就是用顺序表示字段,但可惜这个能力也是被关着的,从源码注释来看是担心操作上造成混淆的风险。原创 2024-11-06 11:13:24 · 593 阅读 · 0 评论 -
hive切换表底层文件类型以及分隔符
2、更改数据的分割符号,但是通常情况下有的表是不支持改动的,比如orc格式的表,除非你用的第三方软件,比如kyuubi,它在跑数据的时候就会想orc文件里面写分割符,奇奇怪怪的。1、改底层文件存储类型,但是一般只会在数据文件与期望类型一致的时候使用,比如load等方式时发现建表时没指定对这样的,因为这个语句不会更改具体的底层文件内容,只改元数据。如果系列化类库没变过来的话用下面的语句改一下,比如text改orc。改完之后查一下结果没问题就行。或者orc改text。原创 2024-11-06 10:40:19 · 384 阅读 · 0 评论 -
hive如何新增分区
hive新增分区有如下几种常见。原创 2024-09-25 16:42:54 · 868 阅读 · 0 评论 -
hive如何刷新现有分区
应当注意的是,如果元数据中存在,但实际数据路径不存在,hive会删除元数据中的消息,而不是去新增底层数据路径。反之如果元数据中不存在,单实际路径中存在,hive会新增元数据信息。hive刷新现有分区的需求,一般出现在你操组分区数据时采用了其他手段,也有极少的情况是有的发行版会删除历史很久的分区,总之各种原因导致的元数据和实际数据的分区对不上。这个报错是值,实际路径中存在过去不hive校验的数据,通常是路径有特殊字符、数据文件格式不对等,此时如果你已经确定数据没有问题,但就是过不去校验,可以使用下面的配置。原创 2024-09-25 11:47:40 · 885 阅读 · 0 评论 -
hive如何删除分区
在Hive中,删除分区是一个常见的操作。你可以使用ALTER TABLE DROP PARTITION语句来删除一个或多个分区。原创 2024-09-25 11:18:24 · 4924 阅读 · 0 评论 -
hive中CASCADE关键字用来干什么的
CASCADE关键字,通常在更改表结构的语句之后出现,它的作用就是让hive去刷新历史数据,比如你在新增一个表字段的时候,你不加CASCADE关键字,就会造成表中已有数据的对应该字段为NULL,甚至有的时候旧的数据不认这个字段,因此在更改表结构的时候要带上这个关键字。原创 2024-09-11 18:29:19 · 358 阅读 · 0 评论 -
Hive与MR任务优化参数
1.当你的查询数据量较大,此时spark等其他计算引擎会因为自身复杂的执行计划导致计算量很大,再加上计算中的硬性资源消耗,导致需要的资源使你无法接受,此时如果你可以接受较长时间的运行等待,建议使用hive,因为hive底层用的mr,任务分割截止到一次mr,没有那面大的消耗需求,你可以通俗的理解为hive只需要有你数据量大小和跑数据需要的进程类开销既可,它没有spark那种复杂的执行计划,因此它的使用成本是目前大数据计算引擎中最低的一个,单效率也是最慢的,不过对于大任务的处理,更稳定。原创 2024-09-09 16:50:25 · 1344 阅读 · 0 评论 -
Spark配置HOME之后使用hive命令会报 $SPARK_HOME/lib/spark-assembly-*.jar: 没有那个文件或目录
报这个错误说明你的hive使用的版本较低,hive命令脚本任然是Spark2.0之前的结构Spark2.0之后没有lib这一文件了,改成了jars文件,因此我们编辑hive命令脚本找到如下内容# add Spark assembly jar to the classpathif [[ -n "$SPARK_HOME" ]]then sparkAssemblyPath=`ls ${SPARK_HOME}/lib/spark-assembly-*.jar` CLASSPATH="${CLASSP原创 2022-01-14 17:32:34 · 1245 阅读 · 0 评论 -
hive 搭建时用root用户无法连接到mysql上的元数据库,亲测解决
搭建hive的时候常常一个不小心就会报下面这个错误Logging initialized using configuration in jar:file:/opt/hive-1.2.1/lib/hive-common-1.2.1.jar!/hive-log4j.propertiesException in thread "main" java.lang.RuntimeException: java.lang.RuntimeException: Unable to instantiate org.apa原创 2021-06-19 22:26:53 · 1553 阅读 · 2 评论 -
Hive如何取最大分区
在我们数据处理的时候取最大分区是一个常有的事,可以说在原始层流出的数据百分之九十九的表都要涉及到最大分区,因为不是增量表就是全量表,所以最大分区怎么取也是一个众说风云的事情,接下来我给大家说说我的经验,供大家参考一下首先我们不能直接max(time),不然效率上就不能说拖整个数据流的后退了,那简直是裤子都拉没了也不要有使用hive的show partitions tablename,然后排序取第一个或最大值这样的想法,因为show语句的结果不能做为一个结果集用,会报错的第一种方式我们可以考虑使用如下的原创 2021-05-06 18:10:24 · 9058 阅读 · 3 评论 -
hive如何做类型转换
在处理数据的时候,常常会有类型不对的需求场景,而hive,也给我们准备了这样的转换类型函数cast(x as y)上边这个函数可以把x数据,转换为y类型如cast(123.4 as int),结果为123原创 2021-04-30 16:24:35 · 666 阅读 · 1 评论 -
Hive中的round、floor、ceiling、ceil、cast
round(x,y)round是四舍五入函数,无y值时默认保留整数,y值大于零时,意为小数点后保留位数,小于零时,是在整数的基础上四舍五入,比如round(129,-1),结果为130f原创 2021-04-30 16:21:39 · 5797 阅读 · 0 评论 -
Hive使用Hbase数据
在phoenix没出先之前使用的Hive操作Hbase,这是很老的一种使用方式,但是由于我们工作中可能会遇到这种用法,因此要会用,配置方式见我之前发的原生集群搭建中两者整合核心在于,外部表等于视图映射,内部表等于表映射 ,但是注意数据不能直接使用load语句,而是要在hive中先放在一个中转表中之后使用HIve的insert语句导入下面给大家写一个例子语句CREATE [external] TABLE hive_hbase_emp_table(empno int,ename string,job原创 2021-04-17 22:34:41 · 391 阅读 · 0 评论 -
Hive如何删除、添加、修改表中的字段
1、添加字段:alter table table_name add columns (column_1 string,column_2 string)添加之后字段由于hive底层是文件和系列化的设计因此查数据会发现新增的列在所有已有列的后面2、修改字段alter table table_name change 已有列 修改名称 类型 comment '';3、删除列Hive不能直接删除列,不然底层系列化就乱了,我们可以通过replace来替换字段,达到同样的效果alter table ta原创 2021-04-13 14:22:48 · 30927 阅读 · 11 评论 -
Hive底层如何表示空值,我们要怎么样控制自定义
Hive在存储数据的时候有一个有别于其他数据库的特点,其他数据库存储中空值是null,当然这里说的是你什么都不存储,默认情况下在连接工具中看到的那个半透明的null,不是你自己存储进去的null,自己存储的那就是字符串了,下面简称真实空字段言归正传,Hive底层和传统数据库不同,传统数据库对数据的存储是直接操作磁盘io,写在磁盘上,元数据在存储在自己的数据库中,但是Hive有点不一样,它是将数据保存在文件里面,文件,以文件的形式存储在磁盘中,这就导致了中间会产生序列化操作,而数据为空是也是通过特殊字符转义原创 2021-02-01 16:19:08 · 417 阅读 · 0 评论 -
Hive表的分桶和分区
Hive的分区使用我就不多说了,看我的另一篇博文就可以https://blog.csdn.net/dudadudadd/article/details/113128126原创 2021-01-27 13:07:30 · 461 阅读 · 0 评论 -
Hive表的静态分区和动态分区怎么用
Hive在操作表的时候默认用的就是静态分区,之所以不直接用动态分区这是因为,静态分区在填充数据的时候需要去判断分区,效率上比静态分区较有不足下面让我们看看它们是怎么使用的吧静态分区CREATE TABLE mytable( name STRING, sex STRING)PARTITIONED BY (dt STRING)ROW FORMAT DELIMITED FIELDS TERMINATED BY "\t";上面这个是静态分区表的创建方式,以dt为分区字段,在使用这种原创 2021-01-25 18:36:11 · 412 阅读 · 0 评论 -
Hive表加载数据的两种方式
第一种为insertinsert overwrite table mytable partition (dt='20150617') select ....上面这个语句是hive的insert语句和数据库的sql相同点是insert为向表中插入数据,overwrite为覆盖,into为追加不同的是hive的insert语句必须有table这个关键字,且如果是分区表需要在表名后跟分区的指定insert语句用作hive的表与表之间数据的交互第二种为loadLOAD DATA LOCAL INPA原创 2021-01-25 18:27:25 · 1376 阅读 · 0 评论 -
Hive的窗口函数
hive的窗口函数说的其实是over子句的用法而已,over可以实现逐条处理等效果,下面我列举一些实用的开窗函数从第一条记录到当前行,逐行做sumSUM(xx) OVER(PARTITION BY xx ORDER BY xx) AS xx从起点到当前行,结果同上,只是加了范围控制 ROWS BETWEEN是控制子句的关键字,UNBOUNDED原意是无边际这里做起始行 ,PRECEDING指定前几行时所用的关键字 ,AND 范围连接-至 ,CURRENT ROW 当前行SUM(xx) OVER(P原创 2021-01-07 08:57:56 · 745 阅读 · 1 评论 -
Hive自定义函数--UDAF
hive的UDAF函数做的是多进一出的聚合操作,它的写法和其他的两种函数有系不同,分为两部分,一部分叫做函数类,一部分叫做计算类,计算类在函数类内部,下面我给大家提供一个做计数操作的UDAF例子,希望可以帮到大家但是我有一句前言告诉大家,Hive的UDAF函数可以说是已经无法使用了,因为它的编写在正式开发的时候不是很方便,所以随着spark的兴起,大家更愿意使用spark去处理数据,同时spark也提供了非常强大的功能,且编写更加便捷,所以对于Hive的UDAF函数,大家知道有这样一个东西就可以,不要去试原创 2021-01-02 14:45:35 · 582 阅读 · 1 评论 -
Hive自定义函数--UDTF
Hive的自定义函数,在工作中是常用的一种处理数据的手段,在封装我们的逻辑方面体现出了非常强大的功能,下面我为大家准备了一个UDTF一进多出函数希望可以帮到大家pom如下<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"原创 2021-01-01 11:05:12 · 570 阅读 · 0 评论 -
Hive的自定义函数--UDF
我们在工作中最常用的应该就是UDF一进一出函数了,因此我给大家准备了一个例子希望可以帮到大家pom如下:<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://mave原创 2020-12-31 17:20:10 · 266 阅读 · 1 评论 -
如何用JAVA像使用数据库那样使用HIVE
在少数必要的时候我们会有连接hive的需求,但是我们又不能直接上服务器去搞,那么这个时候我们就可以使用JAVA代码,像使用数据库那样使用Hivepom如下<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:sc原创 2020-12-31 16:38:53 · 461 阅读 · 0 评论