hive
文章平均质量分 76
泽米
个人微信公众号:小刘三两事。欢迎订阅,一起分享生活。
展开
-
hive sql的执行计划相关知识
大部分写的HiveSQL,最后基本上都可以落到两个角度:1.单表分析:group by+聚合函数,2.多表关联查询,区别只是有的业务逻辑简单一些,有的复杂一些而已:基础知识执行计划的生成步骤:其中Analyzer会和metainfo进行信息交换,去做一些关联查找校验的工作:表存不存在,字段存不存在,字段拼写是否正确等等,最终校验完之后生成query block。谓词下推和map join都发生在逻辑计划优化处,也就是logical optimizer。一般执行计划会分成三..原创 2021-01-12 12:13:30 · 718 阅读 · 0 评论 -
hive计算本月和上月某个统计值的环比
这篇文章旨在解决相邻两个月的统计值环比问题,比如说指标是饭店的自然月客流量指标,这个指标在月初和月中进行数值环比没有一点问题,但是相邻两个月月末一对比就会出现问题:比如说4月和5月,那么就应该拿5.31号的数据环比4.30号的数据。比如说2月和3月,月末应该拿3.31号数据对比2.28号数据,3.30号数据对比2.28号数据...3.27号数据对比2.27号数据。比如说5月和6月数据,月末应该拿6.30号数据对比5.31号数据,6.29号数据对比5.29号数据。基于以上情况,这里提供一个比较原创 2020-09-17 12:09:17 · 2423 阅读 · 0 评论 -
hivesql之一行变多行
工作中经常会遇到这类问题:某张事实表中的字段是数组或者是map结构的数据,想把这里面的数据解析出来并且作为新字段和原来的表的表字段一块查看。如果使用split的话,无法将解析出来的元素和原有字段一起观察,所以引出了explode这个udtf,这个函数配合split函数可以将一行数据变成多行数据,例如:select explode(split('123,456,789',','))结果:123456789但是这样还是不能将拆出来的元素拼接到原有表结构中,也就是说以下代码会报错原创 2020-08-06 20:46:46 · 2888 阅读 · 0 评论 -
hivesql之concat函数字符转义
concat函数功能CONCAT(str1,str2,…)返回结果为连接参数产生的字符串。如有任何一个参数为NULL ,则返回值为 NULL。可以有一个或多个参数。但是当我们想要把字段拼接起来时,如果里面有一些会引起歧义的字符,sql在执行时就会报错,一般是(sql解析异常:parse failed. sql semantic error)比如下面这个栗子:select concat('1231232','--额外属性:','2222') ...原创 2020-08-03 13:44:05 · 3346 阅读 · 0 评论 -
数仓建模-增量表及全量表
判断一张表是增量表还是全量表,我认为有以下步骤:1.这张表是基础数据表还是统计数据表(基础数据表一般来自业务系统的明细记录数据,统计数据表则为基于明细记录数据通过各种统计口径的统计表)。2.判断这张表的同步方式(基础数据表)或者统计主题(统计数据表)。3.根据以上步骤得出这张表是增量还是全量表。举两个例子:第一个例子是基础数据表的例子。1.比如电商每天都会产生用户浏览数据,首先这张表属于基础数据表,如果表存储的就是所有的用户的所有浏览记录,则这张表应该是全量表(这点应该没问题).原创 2020-06-01 19:48:58 · 4470 阅读 · 0 评论 -
hive表更改元数据之后未选择级联,在查询时spark引擎和hive/tez引擎查询结果不一致问题
最近在工作中遇到一个问题:他人修改了数据表之后(加了两个字段,但是没有选择级联更改),用spark引擎查是可以查到数据,用tez/hive来查新增的两个字段的值是null值。最后发现是分区的元数据和表的元数据不一致导致的,分区的元数据少了新增的两个字段,所以查出来数据是null。下面是两段代码,分别查表的元数据信息和分区的元数据信息:#查表的元数据信息desc table_name;#查对应分区的元数据信息desc table_name partition(分区字段='分区值')对比原创 2020-05-11 20:41:30 · 1316 阅读 · 0 评论 -
hive数据倾斜及其解决方案
现在常见的数据倾斜分两种情况,一种是大量的空值导致的,另一种是一对多的情况造成的,下面分别说一下这两种的解决方案。1.空值这种情况下比较好解决,有两种解决方式,使用哪一种具体取决于你需不需要主键为空值的该行纪录的其它信息,因为有些时候这些信息也有用处。下面是伪代码:1.这种情况在join的时候直接过滤空值,最后给union all上select * from a jo...原创 2019-09-11 19:58:21 · 769 阅读 · 0 评论 -
Python连接Hive(基于impyla)
如何安装impyla请看我这篇博文:https://blog.csdn.net/a6822342/article/details/80841056以下是我的一些包的版本thirftpy 0.3.9thirft-sasl 0.2.0thirft 0.11.0sasl 0.2.1pure-sasl 0.3.0impyla 0.14.1到这里,我默认大家是装好impaly了。那么我们在pycharm中运...原创 2018-06-28 15:43:12 · 16226 阅读 · 2 评论 -
error: Unable to find vcvarsall.bat解决办法
我在windows上安装impyla的时候报错然后上网搜了一些资料,有说直接安装whl文件的(失败),有说安装vs的(太大了),有说安装单独的开发工具集(vc++),下面我采用的就是安装vc++,它的下载网址和说明如下:https://blogs.msdn.microsoft.com/vcblog/2015/11/02/announcing-visual-c-build-tools-2015-st...原创 2018-06-28 14:52:24 · 40147 阅读 · 55 评论 -
Python连接Hive(基于PyHive)
要想使用python连接hive,首先得下载以下几个包: pip install saslpip install thriftpip install thrift-saslpip install PyHive 但是我们在安装sasl的时候可能会报错,导致安装不上,这个时候就得去sasl下载地址下载我们所需要的sasl,记得要和我们python版本匹配,我这里选择下载的是sa...原创 2018-06-16 16:34:30 · 61531 阅读 · 35 评论 -
hive的客户端操作(jdbc链接)
最近在学习hive,今天学到hive的远程连接,以下是我在学习过程中遇到的一些问题,和大家分享一下:首先,你如果要使用hive的远程连接,你得先开启hive的远程服务:之前我看视频以及一些资料上写的是在命令行输入:hive --service hiveserver 这个命令是基于0.10的版本(好像是),然后我的hive版本是2.2.0的,所以在这里会报错,以下是报错内容:然后我网上查阅了一些资料...原创 2018-06-14 20:48:39 · 4118 阅读 · 0 评论