HIVE
文章平均质量分 77
HIVE遇到的问题
这孩子谁懂哈
坚持比努力更可怕/You Reap What You Sow
展开
-
【20230103】FROM_UNIXTIME和UNIX_TIMESTAMP函数
首先知道UNIX_TIMESTAMP函数的由来:是自“1970-01-01”的道当前时间的秒数差 累似1337276321(一般10位)1.FROM_UNIXTIME()函数FROM_UNIXTIME(unix_timestamp,format)参数unix_timestamp 时间戳 可以用数据库里的存储时间数据的字段参数format 要转化的格式 比如“”%Y-%m-%d“” 这样格式化之后的时间就是 2017-11-30可以有的形式:%M 月名字(January~Decembe原创 2023-01-03 21:47:30 · 1098 阅读 · 0 评论 -
Hive SQL中的lateral view explode使用记录
Hive SQL中的lateral view explode使用记录原创 2022-08-20 20:25:29 · 2734 阅读 · 0 评论 -
HIVE优化之map和reduce数量
一、控制hive任务中的map数:1.通常情况下,作业会通过input的目录产生一个或者多个map任务。主要的决定因素有: input的文件总个数,input的文件大小,集群设置的文件块大小(目前为128M, 可在hive中通过set dfs.block.size;命令查看到,该参数不能自定义修改);2. 举例:a) 假设input目录下有1个文件a,大小为780M,那么hadoop会将该文件a分隔成7个块(6个128m的块和1个12m的块),从而产生7个map数b) 假设input目...转载 2022-04-30 23:28:59 · 915 阅读 · 0 评论 -
HIVE中小文件问题
一、小文件产生原因1.动态分区插入数据,会产生大量小文件2.数据源本来就含有大量小文件3.数据增量导入,如Sqoop数据导入,增量insert导入数据等4.分桶表(主要是切分文件,容易产生小文件问题)1.2.3都是数据导入的问题:hive 中的小文件肯定是向 hive 表中导入数据时产生,所以先看下向 hive 中导入数据的几种方式1.直接向表中插入数据insert into table A values (1,'zhangsan',88),(2,'lisi',61);原创 2022-04-30 23:19:58 · 3374 阅读 · 1 评论 -
HIVE中explain执行计划
Hive SQL的执行计划描述SQL实际执行的整体轮廓,通过执行计划能了解SQL程序在转换成相应计算引擎的执行逻辑,掌握了执行逻辑也就能更好地把握程序出现的瓶颈点,从而能够实现更有针对性的优化。此外还能帮助开发者识别看似等价的SQL其实是不等价的,看似不等价的SQL其实是等价的SQL。可以说执行计划是打开SQL优化大门的一把钥匙。要想学SQL执行计划,就需要学习查看执行计划的命令:explain,在查询语句的SQL前面加上关键字explain是查看执行计划的基本方法。学会explain,能够给我们工原创 2022-04-30 22:31:27 · 983 阅读 · 0 评论 -
HIVE中MAP和REDUCE数量
一、总览MR执行过程一般的 MapReduce 程序会经过以下几个过程:输入(Input)、输入分片(Splitting)、Map阶段、Shuffle阶段、Reduce阶段、输出(Final result)。1、输入就不用说了,数据一般放在 HDFS 上面就可以了,而且文件是被分块的。关于文件块和文件分片的关系,在输入分片中说明。2、输入分片:在进行 Map 阶段之前,MapReduce 框架会根据输入文件计算输入分片(split),每个输入分片会对应一个 Map 任务,输入分片往.原创 2022-04-30 21:46:17 · 2641 阅读 · 1 评论 -
HIVE中窗口函数
什么是窗口函数窗口函数是用于分析用的一类函数,要理解窗口函数要先从聚合函数说起。 大家都知道聚合函数是将某列中多行的值合并为一行,比如sum、count等。 而窗口函数则可以在本行内做运算,得到多行的结果,即每一行对应一行的值。 通用的窗口函数可以用下面的语法来概括:Function() Over (Partition By Column1,Column2,Order By Column3)窗口函数又分为以下三类: 聚合型窗口函数 分析型窗口函数 * 取值型窗口函数接下来我们将通过几个实际翻译 2022-04-10 20:09:08 · 3914 阅读 · 2 评论 -
HIVE中临时表创建
在我们编写SQL 时候,常常需要使用到临时表。 然后我们根据这个临时表,进行之后的操作,但是创建临时表有一定的开销。1.WITH创建临时表如果这个临时表并不需要保存,并且下文只需要用有限的几次,我们可以采用下面的方法。with as也叫做子查询部分,首先定义一个sql片段,该sql片段会被整个sql语句所用到,为了让sql语句的可读性更高些,作为提供数据的部分,也常常用在union等集合操作中。with as就类似于一个视图或临时表,可以用来存储一部分的sql语句作为别名,不同的是with.原创 2021-12-19 18:55:07 · 12236 阅读 · 0 评论 -
HIVE中导入文件后数据量变多原因和去除换行符的解决办法
在使用excel导入文件进入hive的时候,一切顺利,但是导入后查询数据,发现数据量变多了,比如:一开始excel中的数据量是8000条,导入hive后,查询的数据变成10000多条,数据量在导入后变多了。于是查找原因首先从hive建的表开始查起,表的建表语句如下下所示:create table if not exists TMP_T1( T1 VARCHAR(100) comment 't1', T2 VARCHAR(100) comment 't2', T3 VARCHAR(100)原创 2020-12-27 15:34:19 · 15586 阅读 · 0 评论 -
HIVE中纵表转横表
最近在写hive脚本的时候,遇到一个问题就是,现在存在一个纵表(详细表),如下所示 table T1id bankname cardname 1 中国银行 金卡 2 中国银行 白金卡 3 建设银行 普卡 4 工商银行 金卡 5 建设银行 钻石卡 想把上面的纵表变为横表便于观看,如下所示:id bankname1 cardname1 bankname2 cardname2 .原创 2020-12-27 14:49:22 · 14085 阅读 · 0 评论 -
hive中分区和分桶的一些简单理解
一、Hive分区。是指按照数据表的某列或某些列分为多个区,区从形式上可以理解为文件夹,比如我们要收集某个大型网站的日志数据,一个网站每天的日志数据存在同一张表上,由于每天会生成大量的日志,导致数据表的内容巨大,在查询时进行全表扫描耗费的资源非常多。那其实这个情况下,我们可以按照日期对数据表进行分区,不同日期的数据存放在不同的分区,在查询时只要指定分区字段的值就可以直接从该分区查找。常用的分区字段都是按照时间来区分。#创建分区表create table t1 (id int co...原创 2020-11-14 23:28:25 · 13746 阅读 · 0 评论 -
白话解释hive中Rank,Dense_Rank, Row_Number组内排序函数
SQL很熟悉的3个组内排序函数了。语法一样:ROW_NUMBER/RANK/DENSE_RANK() over (partion by col1... order by col2... desc/asc)看个例子:查询每个班级每门课程的排名情况:select class1, score, rank() over(partition by class1 order by score desc) rk1, dense_rank() over(partiti...原创 2020-11-14 17:29:04 · 13102 阅读 · 0 评论 -
HIVE中出现ParseException line 1:22 missing ALL at ‘select‘ near ‘<EOF>‘的解决办法
我们在以前无论是使用MYSQL 还是DB2等关系型数据库中都会常常使用Union或者Union all来做两个查询的并集或者并集的去重操作,虽然有影响查询性能,但是还是相当的方便的。Union:对两个结果集进行并集操作,不包括重复行,同时进行默认规则的排序;Union All:对两个结果集进行并集操作,包括重复行,不进行排序;在hive想同样使用union对两个数据集进行去重查询,在执行操作后,发现是日志报错了:错误如下:ParseException line 1:22 missin...原创 2022-03-26 20:26:02 · 4289 阅读 · 0 评论 -
HIVE中ROW_NUMBER()函数的讲解
ROW_NUMBER()函数ROW_NUMBER() OVER(PARTITION BY COLUMN1 ORDER BY COLUMN2)1上述代码含义是首先根据COLUMN1进行结果集分组,结果集内部按照COLUMN2分组,输出结果是类似于双重分组的结果。select id,dept,salary,ROW_NUMBER() OVER(PARTITION BY dept ORDER BY salary)1执行结果为:id dept salary row_number1 a 10000转载 2020-10-25 17:34:27 · 14030 阅读 · 0 评论 -
HIVE中连接条件不能使用LIKE模糊匹配的解决办法
在使用hive的中需要多表关联的时候,想使用模糊匹配的like进行模糊匹配的时候,执行代码如下所示:SELECT * FROM TABLE1 ALEFT JOINTABLE2 BON A.XX LIKE CONCAT('%' , B.YY , '%')这段代码在DB2 中是可以顺利执行的,但是在hive就是会报错,原因就是hive中不能很好的处理非等值连接,但是hive中也提供了别的处理方式,来达到在连接时使用模糊匹配的效果。hive中提供了一个locate()的函数;locat原创 2020-10-25 17:27:43 · 19083 阅读 · 9 评论 -
HIVE中ParseException line 5:0 missing ALL at ‘select‘ near
在公司部署的hive环境中,按照DB2 的思维使用union all 来连接两个查询,并同时去重,但是使用UNION ALL之后就发现调度的时候出现ParseException line 5:0 missing ALL at 'select' near ''的错误!!后来查询了一下官方的文档,才发现Hive在1.2.0之前的版本只支持union all,在1.2.0之后的版本才支持union.官方的文档:官方文档才明白部署的版本过低了,但是为了解决当前的问题,只能另辟蹊径了。一般的使..原创 2020-10-25 17:13:46 · 14925 阅读 · 2 评论