Hive
文章平均质量分 58
☞空白页
这个作者很懒,什么都没留下…
展开
-
Hive优化—skew join优化原理详解
目录优化原理编辑适用范围测试验证优化原理JOIN中倾斜键的处理思路最早是在HIVE-964中提出的,整体思路是使用独立的作业和mapjoin来处理倾斜的键。用以处理倾斜键的MR作业数是表的数量减一(we canstreamthe last table, so big keys in the last table will not be a problem)在执行JOIN的过程中,会将一个表中的大key(也就是倾斜的那部分数...转载 2022-05-30 21:09:55 · 2937 阅读 · 1 评论 -
HiveSQL技术原理、优化[深度解析]
1.Hive SQL 编译成MapReduce过程编译 SQL 的任务是在上节中介绍的 COMPILER(编译器组件)中完成的。Hive将SQL转化为MapReduce任务,整个编译过程分为六个阶段: 词法、语法解析: Antlr 定义 SQL 的语法规则,完成 SQL 词法,语法解析,将 SQL 转化为抽象语法树 AST Tree; Antlr是一种语言识别的工具,可以用来构造领域语言。使用Antlr构造特定的语言只需要编写一个语法文件,定义词法和语法替换规则即可,Antlr.转载 2022-03-20 16:37:47 · 181 阅读 · 0 评论 -
Hivesql-高级进阶技巧
温故而知新,直接上干货,HiveSQL高级进阶技巧,重要性不言而喻。掌握这10个技巧,你的SQL水平将有一个质的提升!1.删除:insert overwrite tmp select * from tmp where id != '666';2.更新:insert overwrite tmp select id,label, if(id = '1' and label = 'grade','25',value) as value from tmp where id !原创 2022-03-20 15:15:57 · 189 阅读 · 0 评论 -
HIVE高级函数--get_json_object()和json_tuple()
将每一行数据存储为string,属性名lineget_json_object()select get_json_object(line,'$.movie') as movie, get_json_object(line,'$.rate') as rate, get_json_object(line,'$.timeStamp') as time, get_json_object(line,'$.uid') as uidfrom rate_json;json_tuple()...原创 2022-02-17 14:32:36 · 924 阅读 · 0 评论 -
Like rlike在hive中的区别
Hive 中可以用 like 和 rlike 进行模糊匹配,like 采用的是 SQL 通配符,而 rlike 采用的是正则匹配。like%代替 0 或多个字符_代替一个字符举个例子:-- 返回值为 TRUEselect 'aaa' like '%a%'-- 返回值为 TRUEselect 'aaa' like '_a_'rlikerlike 采用正则表达式,以下总结几个常用的\: 转义用,序列 \\ 匹配 \^: 匹配输入字符串开始的位置$: 匹配输入字..原创 2021-11-28 20:07:25 · 1712 阅读 · 0 评论 -
hive lateral view 与 explode详解
项目github地址:bitcarmanlee easy-algorithm-interview-and-practice欢迎大家star,留言,一起学习进步1.explodehive wiki对于expolde的解释如下:explode() takes in an array (or a map) as an input and outputs the elements of the array (map) as separate rows. UDTFs can be used in th转载 2021-11-22 18:17:11 · 379 阅读 · 0 评论 -
Hive中Map数据类型转String类型,其中具体内容不变
--上传测试数据drop table test_map_1;create table test_map_1 asselect 1 as uid, map("key1", "value1","key2", "value2") as map1 union all select 2 as uid, map("key3", "value3","key4", "value4") as map1;--查看当前测试表结构是否是map<string,string>类型hive> desc .转载 2021-11-22 18:00:07 · 4060 阅读 · 0 评论 -
HiveSQL高级进阶技巧
直接上干货,HiveSQL高级进阶技巧,重要性不言而喻。掌握这10个技巧,你的SQL水平将有一个质的提升!1.删除:insert overwrite tmp select * from tmp where id != '666';2.更新:insert overwrite tmp select id,label, if(id = '1' and label = 'grade','25',value) as value from tmp where id != '666原创 2021-11-08 20:45:03 · 332 阅读 · 0 评论 -
with as 语句真的会把数据存内存嘛?(源码剖析)
with as常见问题,大概有两类:1、为啥我用了with..as效率没有提高?2、sql跑不动,改成with..as的写法,会不会更好些?网上博客几乎都有结论with ... as语句会把数据放在内存:前言1:hive可以通过with查询来提高查询性能,因为先通过with语法将数据查询到内存(既然是加到内存中,如果数据量太大,估计会占用大量资源,可能会报内存溢出),然后后面其他查询可以直接使用,这种方法与创建临时表类似但是不需要创建临时表实体表,内存中的子查询结果再会话结束后会自动删除转载 2021-09-24 11:03:39 · 1989 阅读 · 0 评论 -
Hive高阶分析函数
1.GROUPINGSETS示例:实现同一数据集的多重group by操作。事实上GROUPING SETS是多个GROUP BY进行UNION ALL操作的简单表达。数据:+----------+----------+---+|year_month|date |pv |+----------+----------+---+|2015-04 |2015-04-12|10 ||2015-03 |2015-03-10|2 ||2015-03 |2015-03-..原创 2021-09-16 22:40:52 · 183 阅读 · 0 评论 -
Hive 查看库有多少表,表有多少字段以及动态监控
--1.查看hive的数据库中有多少表eg:hive -e "use test;show tables;" | wc -l--2.查看hive的一张表有多少个字段eg:hive -e "use test;describe test.ywb_test07;"| wc -l引申出: 1.通过shell,结果写入到一个文件中,在通过监控实现动态监测前后两端的表结构是否发生变化; 2.基于1,将更改之后的字段加工成为新的建表语句,可以实现,在h...原创 2021-09-02 15:47:39 · 4808 阅读 · 0 评论 -
Hive 中的Mapper Reducer个数 决定因素
1.Mapper个数Hive 中的Mapper个数的是由以下几个参数确定的:mapred.min.split.size,mapred.max.split.size,dfs.block.sizesplitSize =Math.max(minSize, Math.min(maxSize, blockSize));map个数还与inputfilles的个数有关,如果有2个输入文件,即使总大小小于blocksize,也会产生2个map2.Reducer个数我们每次执行hive的hql时...原创 2021-08-10 10:47:08 · 1363 阅读 · 0 评论 -
Hive 数据倾斜问题定位排查及解决(实战)
多数介绍数据倾斜的文章都是以大篇幅的理论为主,并没有给出具体的数据倾斜案例。当工作中遇到了倾斜问题,这些理论很难直接应用,导致我们面对倾斜时还是不知所措。今天我们不扯大篇理论,直接以例子来实践,排查是否出现了数据倾斜,具体是哪段代码导致的倾斜,怎么解决这段代码的倾斜。当执行过程中任务卡在 99%,大概率是出现了数据倾斜,但是通常我们的 SQL 很大,需要判断出是哪段代码导致的倾斜,才能利于我们解决倾斜。通过下面这个非常简单的例子来看下如何定位产生数据倾斜的代码。表结构描述先来了解下这些表中我原创 2021-08-06 10:30:35 · 1091 阅读 · 1 评论 -
Hive的Map Join与Common Join
笼统的说,Hive中的Join可分为Common Join(Reduce阶段完成join)和Map Join(Map阶段完成join)。一、Hive Common Join如果不指定MapJoin或者不符合MapJoin的条件,那么Hive解析器会将Join操作转换成Common Join,即:在Reduce阶段完成join.整个过程包含Map、Shuffle、Reduce阶段。Map阶段读取源表的数据,Map输出时候以Join on条件中的列为key,如果Join有多个关联键,则以这些关联原创 2021-08-06 10:22:43 · 172 阅读 · 0 评论 -
Hive 常用设置配置
set mapreduce.job.queuename=product01;set mapred.job.name=dw.dw_bloodsugar_full${dt};set hive.exec.dynamic.partition=true;set hive.exec.dynamic.partition.mode=nonstrict;set hive.exec.max.dynamic.partitions=1000;set hive.exec.max.dynamic.partitions.pe.原创 2021-08-06 10:12:54 · 339 阅读 · 0 评论 -
Hive SQL语句的正确执行顺序
关于 sql 语句的执行顺序网上有很多资料,但是大多都没进行验证,并且很多都有点小错误,尤其是对于 select 和 group by 执行的先后顺序,有说 select 先执行,有说 group by 先执行,到底它俩谁先执行呢?今天我们通过 explain 来验证下 sql 的执行顺序。在验证之前,先说结论,Hive 中 sql 语句的执行顺序如下:from .. where .. join .. on .. select .. group by .. select .. having ..原创 2021-07-28 09:02:59 · 3398 阅读 · 9 评论 -
Hive自定义函数UDF、UDAF、UDTF
0.依赖<dependencies> <!--添加hive依赖--> <dependency> <groupId>org.apache.hive</groupId> <artifactId>hive-exec</artifactId> <version>3.1.2</version> </dependency>原创 2021-07-15 17:24:15 · 112 阅读 · 0 评论 -
Hive 配置参数大全
hive.ddl.output.format:hive的ddl语句的输出格式,默认是text,纯文本,还有json格式,这个是0.90以后才出的新配置;hive.exec.script.wrapper:hive调用脚本时的包装器,默认是null,如果设置为python的话,那么在做脚本调用操作时语句会变为pythonhive.exec.plan:hive执行计划的文件路径,默认是null,会在运行时自动设置,形如hdfs://xxxx/xxx/xx;hive.exec.scratchdir:hi转载 2021-07-14 10:28:58 · 721 阅读 · 0 评论 -
Hive中HSQL中left semi join
Hive中HSQL中left semi join证明在Hive 2.1.1版本中,是支持where子句中的子查询,SQL常用的exist in子句在Hive中是不支持的,但可以使用一个更高效的实现方式---- semi join最主要的使用场景就是解决exist in。SQL1:SELECT table1.student_no, table1.student_name FROM table1 LEFT SEMI JOIN table2 on ( table1.student_no =table转载 2021-06-16 10:57:58 · 707 阅读 · 0 评论 -
每个日期最新收盘价
需求:现需通过sql获取该公司在第a天的收盘价,若第a天无收盘价记录,则取该日期之前,最近的一个收盘价作为第a天的收盘价(例如:,2019-10-05的收盘价取2019-09-30的54.22)数据:目标结果:sql:select price_date, price, first_value(price) over(partition by first_price_date order by price_date) from ( select price_da原创 2021-06-11 10:46:09 · 298 阅读 · 0 评论 -
Hive与Hbase数据表关联
一、简单介绍hive的元数据保存在metastore里面,真实的数据一般位于hdfs中,可以通过hql来对数据进行分析。hbase中的数据也是存放在hdfs上的,可不可以使用hive来分析hbase中的数据呢?二、hive表到hbase表的映射2.1hbase表t1的结构和其中的数据如下图2.2创建hive表映射到hbase的表首先输入下面的命令进入hive的客户端hive --auxpath /usr/local/hive-0.14.0/lib/hive-hbase-han原创 2021-05-20 09:58:11 · 272 阅读 · 0 评论 -
每个日期新用户的次日留存率
SQL练习题:网站每天有很多人登录,请你统计一下牛客每个日期新用户的次日留存率。题目:牛客每天有很多人登录,请你统计一下牛客每个日期新用户的次日留存率。有一个登录(login)记录表,简况如下:第1行表示id为2的用户在2020-10-12使用了客户端id为1的设备登录了牛客网,因为是第1次登录,所以是新用户。。。第4行表示id为2的用户在2020-10-13使用了客户端id为2的设备登录了牛客网,因为是第2次登录,所以是老用户。。最后1行表示id为4的用户在202.原创 2021-04-23 11:39:00 · 1605 阅读 · 0 评论 -
Hive之Grouping Sets函数
Hive之Grouping Sets函数对于经常需要对数据进行多维度的聚合分析的场景,您既需要对a列做聚合,也要对b列做聚合,同时要按照a、b两列同时做聚合,因此需要多次使用UNION ALL。使用GROUPING SETS可以快速解决此类问题。并且能优化stage的个数,提高执行效率。1.建表create table test(id string, os string, device string, city string);2.准备数据insert into test v原创 2021-03-31 15:51:14 · 562 阅读 · 0 评论 -
计算连续登陆最大天数
计算连续登陆最大天数原始数据:u0001 2019-10-10u0001 2019-10-11u0001 2019-10-12u0001 2019-10-14u0001 2019-10-15u0001 2019-10-17u0001 2019-10-18u0001 2019-10-19u0001 2019-10-20 u0002 2019-10-20说明:数据是简化版,两列分别是user_id,log_in_date。现实情况需要从采集数据经过去重,转换得到以上形式数据原创 2021-03-30 14:37:31 · 121 阅读 · 0 评论 -
Hive计算绝对值同环比
目录 什么是绝对值同比 什么是绝对值环比 数据集准备 同比计算 环比计算 什么是绝对值同比本期数据-同期数据/|同期数据|例:2021年1月1日的gmv -2020年1月1日的gmv/|2020年1月1日的gmv|什么是绝对值环比本期数据-上期数据/|上期数据|例:2021年2月2日的gmv -2020年2月1日的gmv/|2020年2月1日的gmv|数据集准备建表语句create table new_table(...原创 2021-01-20 14:46:57 · 925 阅读 · 1 评论 -
Flink on Hive构建流批一体数仓
Flink使用HiveCatalog可以通过批或者流的方式来处理Hive中的表。这就意味着Flink既可以作为Hive的一个批处理引擎,也可以通过流处理的方式来读写Hive中的表,从而为实时数仓的应用和流批一体的落地实践奠定了坚实的基础。本文将以Flink1.12为例,介绍Flink集成Hive的另外一个非常重要的方面——Hive维表JOIN(Temporal Table Join)与Flink读写Hive表的方式。以下是全文,希望本文对你有所帮助。Flink写入Hive表Flink支持以批处理(B原创 2021-01-06 09:06:05 · 487 阅读 · 0 评论 -
轻松搞定 Shell 玩转 HiveSQL
概述hive是数据仓库、数据分析人员必用的工具之一。实际工作中,使用hive很多时候都是在linux shell环境下。运行hiveSQL的方式有以下几种。1.hive 交互式命令行即在shell环境下直接使用hive命令,当屏幕下方出现hive>时,就进入了hive的环境,如下图所示。在>后面就可以写hiveSQL查询我们需要的数据,注意语句之间用英文分号隔开。通常适合于语句较短,需要快速查询或者对大段SQL进行语法调试的情况。2.hive -e方式hive -e "待原创 2021-01-04 09:16:14 · 542 阅读 · 1 评论 -
Hive数仓之拉链表(原理、设计以及在Hive中的实现)
正 文0x00 前言本文将会谈一谈在数据仓库中拉链表相关的内容,包括它的原理、设计、以及在我们大数据场景下的实现方式。全文由下面几个部分组成: 先分享一下拉链表的用途、什么是拉链表。 通过一些小的使用场景来对拉链表做近一步的阐释,以及拉链表和常用的切片表的区别。 举一个具体的应用场景,来设计并实现一份拉链表,最后并通过一些例子说明如何使用我们设计的这张表(因为现在Hive的大规模使用,我们会以Hive场景下的设计为例)。 分析一下拉链表的优缺点,并对前面.原创 2020-11-25 14:42:26 · 319 阅读 · 0 评论 -
Hive近百个常规函数详解
背景Apache Hive是一个建立在ApacheHadoop之上的数据仓库软件项目,用于提供数据查询和分析,现支持引擎有MapReduce、Tez、Spark等等。Hive像传统的关系型数据库一样含有大量内置函数,但也可支持UDF、UDAF等用户自定义函数编写。Hive自身支持函数的隐式转换,方便用户使用。但是这些隐式转换出现问题可能不会报错,但是也会给用户带来非期望的结果。建议大家函数按照规范来使用。内置函数现在分门别类地整理了日期、数值、集合、条...原创 2020-11-11 14:01:58 · 120 阅读 · 0 评论 -
Hive窗口函数(over/partition by/order by/window/序列函数)总结与实践
一、简介本文主要介绍Hive中的窗口函数,Hive中的窗口函数和SQL中的窗口函数相类似,都是用来做一些数据分析类的工作,一般用于olap分析(在线分析处理)。二、概念我们都知道在sql中有一类函数叫做聚合函数,例如sum()、avg()、max()等等,这类函数可以将多行数据按照规则聚集为一行,一般来讲聚集后的行数是要少于聚集前的行数的,但是有时我们想要既显示聚集前的数据,又要显示聚集后的数据,这时我们便引入了窗口函数。「在深入研究Over字句之前,一定要注意:在SQL处理中,窗口函数都是原创 2020-11-06 16:18:17 · 1119 阅读 · 0 评论 -
HiveSQL电商分析案例30题
问题导读:1、如何通过UDF自定义 MD5加密函数 ,对地址、邮箱等信息进行加密?2、如何对表内容进行检查?3、如何进行数据分析?一、前言Hive 学习过程中的一个练习项目,如果不妥的地方或者更好的建议,欢迎指出!我们主要进行一下一些练习: 数据结构 数据清洗 基于Hive的数据分析 二、项目需求首先和大家讲一下这个项目的需求:「对某零售企业最近1年门店收集的数据进行数据分析」 潜在客户画像 ...原创 2020-11-03 16:13:12 · 586 阅读 · 0 评论 -
一文读懂Hive(架构原理,DDL,常用函数,优化技巧)
1.HIVE简介1.什么是HIVE hive是基于Hadoop构建的一套数据仓库分析系统,它提供了丰富的SQL查询方式来分析存储在Hadoop分布式文件系统中的数据: 可以将结构化的数据文件映射为一张数据库表,并提供完整的SQL查询功能; 可以将SQL语句转换为MapReduce任务运行,通过自己的SQL查询分析需要的内容,这套SQL简称Hive SQL,使不熟悉mapreduce的用户可以很方便地利用SQL语言查询、汇总和分析数据。2.HIVE特点 ...原创 2020-11-05 11:34:23 · 318 阅读 · 0 评论