大数据Hive技术
Hive研发
尘世壹俗人
做一只马喽
展开
-
hive中CASCADE关键字用来干什么的
CASCADE关键字,通常在更改表结构的语句之后出现,它的作用就是让hive去刷新历史数据,比如你在新增一个表字段的时候,你不加CASCADE关键字,就会造成表中已有数据的对应该字段为NULL,甚至有的时候旧的数据不认这个字段,因此在更改表结构的时候要带上这个关键字。原创 2024-09-11 18:29:19 · 129 阅读 · 0 评论 -
Hive任务优化参数整理
1.当你的查询数据量较大,此时spark等其他计算引擎会因为自身复杂的执行计划导致计算量很大,再加上计算中的硬性资源消耗,导致需要的资源使你无法接受,此时如果你可以接受较长时间的运行等待,建议使用hive,因为hive底层用的mr,任务分割截止到一次mr,没有那面大的消耗需求,你可以通俗的理解为hive只需要有你数据量大小和跑数据需要的进程类开销既可,它没有spark那种复杂的执行计划,因此它的使用成本是目前大数据计算引擎中最低的一个,单效率也是最慢的,不过对于大任务的处理,更稳定。原创 2024-09-09 16:50:25 · 989 阅读 · 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 · 1168 阅读 · 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 · 1318 阅读 · 2 评论 -
Hive如何取最大分区
在我们数据处理的时候取最大分区是一个常有的事,可以说在原始层流出的数据百分之九十九的表都要涉及到最大分区,因为不是增量表就是全量表,所以最大分区怎么取也是一个众说风云的事情,接下来我给大家说说我的经验,供大家参考一下首先我们不能直接max(time),不然效率上就不能说拖整个数据流的后退了,那简直是裤子都拉没了也不要有使用hive的show partitions tablename,然后排序取第一个或最大值这样的想法,因为show语句的结果不能做为一个结果集用,会报错的第一种方式我们可以考虑使用如下的原创 2021-05-06 18:10:24 · 8472 阅读 · 3 评论 -
hive如何做类型转换
在处理数据的时候,常常会有类型不对的需求场景,而hive,也给我们准备了这样的转换类型函数cast(x as y)上边这个函数可以把x数据,转换为y类型如cast(123.4 as int),结果为123原创 2021-04-30 16:24:35 · 605 阅读 · 1 评论 -
Hive中的round、floor、ceiling、ceil、cast
round(x,y)round是四舍五入函数,无y值时默认保留整数,y值大于零时,意为小数点后保留位数,小于零时,是在整数的基础上四舍五入,比如round(129,-1),结果为130f原创 2021-04-30 16:21:39 · 5432 阅读 · 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 · 352 阅读 · 0 评论 -
Hive中的replace
Hive其自身是不支持普通关系型数据库的的replace函数的,当然除非你用的是sparksql操作hive数据,因为sparksql是支持的如果你用的只是Hive那么你可以使用Hive提供的其他两个函数,达到同样的效果translate(原字段,原有数据,替换数据)这个方法在Hive0.10之后才可以使用的,之前一直使用的是如下函数regexp_replace(原字段,原有数据,替换数据)...原创 2021-04-13 15:03:47 · 18417 阅读 · 1 评论 -
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 · 27264 阅读 · 11 评论 -
Hive底层如何表示空值,我们要怎么样控制自定义
Hive在存储数据的时候有一个有别于其他数据库的特点,其他数据库存储中空值是null,当然这里说的是你什么都不存储,默认情况下在连接工具中看到的那个半透明的null,不是你自己存储进去的null,自己存储的那就是字符串了,下面简称真实空字段言归正传,Hive底层和传统数据库不同,传统数据库对数据的存储是直接操作磁盘io,写在磁盘上,元数据在存储在自己的数据库中,但是Hive有点不一样,它是将数据保存在文件里面,文件,以文件的形式存储在磁盘中,这就导致了中间会产生序列化操作,而数据为空是也是通过特殊字符转义原创 2021-02-01 16:19:08 · 360 阅读 · 0 评论 -
Hive表的分桶和分区
Hive的分区使用我就不多说了,看我的另一篇博文就可以https://blog.csdn.net/dudadudadd/article/details/113128126原创 2021-01-27 13:07:30 · 405 阅读 · 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 · 232 阅读 · 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 · 1215 阅读 · 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 · 542 阅读 · 0 评论 -
Hive自定义函数--UDAF
hive的UDAF函数做的是多进一出的聚合操作,它的写法和其他的两种函数有系不同,分为两部分,一部分叫做函数类,一部分叫做计算类,计算类在函数类内部,下面我给大家提供一个做计数操作的UDAF例子,希望可以帮到大家但是我有一句前言告诉大家,Hive的UDAF函数可以说是已经无法使用了,因为它的编写在正式开发的时候不是很方便,所以随着spark的兴起,大家更愿意使用spark去处理数据,同时spark也提供了非常强大的功能,且编写更加便捷,所以对于Hive的UDAF函数,大家知道有这样一个东西就可以,不要去试原创 2021-01-02 14:45:35 · 497 阅读 · 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 · 496 阅读 · 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 · 199 阅读 · 0 评论 -
如何用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 · 418 阅读 · 0 评论