![](https://img-blog.csdnimg.cn/20190927151117521.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Hive
文章平均质量分 81
大数据离线计算框架
败给你的黑色幽默丶
if i say you're the one would you believe me;
if i ask you to stay would you show me the way
展开
-
【Hive调优】Explain查看执行计划
Explain1. explain 的用法Operator2. explain 的使用场景案例一:join 语句会过滤 null 的值吗?案例二:group by 分组语句会进行排序吗?案例三:哪条sql执行效率高呢?案例四:定位产生数据倾斜的代码段1. 通过时间判断2. 通过任务 Counter 判断3. 定位 SQL 代码1.确定任务卡住的 stage2. 确定 SQL 执行代码3. explain dependency的用法案例一:识别看似等价的代码案例二:识别SQL读取数据范围的差别4. expla转载 2022-03-22 15:17:11 · 1160 阅读 · 1 评论 -
【Hive】SQL执行原理
Join 的实现原理以下面这个 SQL 为例,讲解 join 的实现:select u.name, o.orderid from order o join user u on o.uid = u.uid; 在 map 的输出 value 中为不同表的数据打上 tag 标记,在 reduce 阶段根据 tag 判断数据来源。MapReduce 的过程如下:MapReduce CommonJoin 的实现group by原理将group by 的字段 作为key,即groupBy_key 。原创 2022-02-26 12:00:16 · 1290 阅读 · 0 评论 -
【hive调优】
hive建表设计层面调优1.分区表分区表,查询的时候只会扫描分区的数据,避免全表查询;所以一定要用在查询时where条件中经常使用的字段作为分区字段,就比如datetime2.分桶表分桶表示hash散列,把一系列的记录按照hash散列进行分类;一个分桶中会有多个不同的值,如果一个分桶中包含了某个值,那么这个值的所有的记录必然都在这个分桶中;分桶经常使用的场景:join采样比如想去分析某个数据的中位数,或者平均值啊 最大最小值,从全表算是很消耗性能的;此时可以用分桶表,分桶表中的数据具备原创 2021-10-28 02:00:59 · 765 阅读 · 0 评论 -
【Hive】【问题】
Hive读取Lzo压缩文件问题现象:hive (gmall)> select * from ods_log;Time taken: 0.706 seconds, Fetched: 2955 row(s)hive (gmall)> select count(*) from ods_log;2959两次查询结果不一致。原因:select * from ods_log不执行MR操作,直接采用的是ods_log建表语句中指定的DeprecatedLzoTextInputFormat,原创 2022-01-06 21:59:37 · 236 阅读 · 0 评论 -
【Hive】【内置常用函数】
get_json_object1)数据 json数组[{"name":"大郎","sex":"男","age":"25"},{"name":"西门庆","sex":"男","age":"47"}]2)取出第一个json对象select get_json_object('[{"name":"大郎","sex":"男","age":"25"},{"name":"西门庆","sex":"男","age":"47"}]','$[0]');结果是:{“name”:“大郎”,“sex”:“男”,“age原创 2022-02-13 18:41:15 · 626 阅读 · 0 评论 -
【八】Hive自定义函数
三种用户自定义函数UDF(User-Defined-Function)一进一出UDAF(User-Defined Aggregation Function)聚合函数,多进一出类似于:count/max/minUDTF(User-Defined Table-Generating Functions)一进多出如lateral view explode()官方文档地址https://cwiki.apache.org/confluence/display/Hive/HivePlugins编原创 2021-11-07 20:13:32 · 1888 阅读 · 0 评论 -
【八】 Hive内置函数
系统内置函数1)查看系统自带的函数hive> show functions;2)显示自带的函数的用法hive> desc function upper;3)详细显示自带的函数的用法hive> desc function extended upper;常用内置函数NVLnvl(v1,v2)参数:第一个参数是字段,第二个参数是常量值或者某个字段;功能是如果v1为NULL,则返回v2的值,否则返回value的值,如果两个参数都为NULL ,则返回NULLCASE W原创 2021-11-06 02:12:38 · 1542 阅读 · 0 评论 -
【7】 分区表和分桶表
分区表和分桶表分区表1.分区表基本操作1)引入分区表2)创建分区表语法3)加载数据到分区表中4)查询分区表中数据5)增加分区6)删除分区7)查看分区表有多少分区8)查看分区表结构2.二级分区1)创建二级分区表2)正常的加载数据3.分区表和数据产生关联的三种方式(1)方式一:上传数据后修复 msck repair(2)方式二:上传数据后添加分区(3)方式三:创建文件夹后load数据到分区4.动态分区调整1)动态分区参数设置2)案例实操3)动态分区新特性分桶表分区表Hive表实际上就是对应一个HDFS文件原创 2021-11-03 02:39:45 · 1123 阅读 · 0 评论 -
【6】查询
注意:(1)SQL 语言大小写不敏感。(2)SQL 可以写在一行或者多行(3)关键字不能被缩写也不能分行(4)各子句一般要分行写。(5)使用缩进提高语句的可读性。原创 2021-11-02 02:40:31 · 76 阅读 · 0 评论 -
【5】DML
数据导入1.向表中装载数据(Load)1)语法hive> load data [local] inpath '数据的path' [overwrite] into table \student [partition (partcol1=val1,…)];(1)load data:表示加载数据(2)local:表示从本地加载数据到hive表;否则从HDFS加载数据到hive表(3)inpath:表示加载数据的路径(4)overwrite:表示覆盖表中已有数据,否则表示追加(5)into原创 2021-11-01 02:15:14 · 134 阅读 · 0 评论 -
【4】 DDL
DDL就是建库建表、删库删表修改的语句;库1. 创建数据库1.1 语法格式CREATE DATABASE [IF NOT EXISTS] database_name[COMMENT database_comment][LOCATION hdfs_path][WITH DBPROPERTIES (property_name=property_value, ...)];(1)[LOCATION hdfs_path]指定库数据存放在hdfs上的路径(2)[IF NOT EXISTS] (标准写原创 2021-10-22 18:07:05 · 80 阅读 · 0 评论 -
【3】Hive数据类型
基本数据类型对于Hive的String类型相当于数据库的varchar类型,该类型是一个可变的字符串,不过它不能声明其中最多能存储多少个字符,理论上它可以存储2GB的字符数。集合数据类型Hive有三种复杂数据类型ARRAY、MAP 和 STRUCT。ARRAY和MAP与Java中的Array和Map类似,而STRUCT与C语言中的Struct类似,它封装了一个命名字段集合复杂数据类型允许任意层次的嵌套。案例实操1)假设某表有如下一行,我们用JSON格式来表示其数据结构{ "n原创 2021-10-19 15:51:16 · 167 阅读 · 0 评论 -
【1】Hive基本概念
1.Hive简介Hive:由Facebook开源用于解决海量结构化日志的数据统计工具。Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张表,并提供类SQL查询功能关键字:结构化日志,数仓工具,提供SQL查询功能2.Hive本质hive的本质:将HQL转化成MapReduce程序(1)Hive处理的数据存储在HDFS(2)Hive分析数据底层的实现是MapReduce(3)执行程序运行在Yarn上3.Hive的优缺点和场景3.1 优点(1)操作接口采用类SQ原创 2021-10-30 03:13:46 · 702 阅读 · 0 评论