
hive
鞋子不会飞
突破认识看世界
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
(第九章) Hive企业级优化之执行计划(Explain)
Hive企业级优化之执行计划(Explain)1.基本语法EXPLAIN [EXTENDED | DEPENDENCY | AUTHORIZATION] query2.案例实操(1)查看下面这条语句的执行计划hive (default)> explain select * from emp;hive (default)> explain select deptno, av...原创 2019-11-08 00:11:09 · 165 阅读 · 0 评论 -
(第九章) Hive企业级优化之推测执行
Hive企业级优化之推测执行在分布式集群环境下,因为程序Bug(包括Hadoop本身的bug),负载不均衡或者资源分布不均等原因,会造成同一个作业的多个任务之间运行速度不一致,有些任务的运行速度可能明显慢于其他任务(比如一个作业的某个任务进度只有50%,而其他所有任务已经运行完毕),则这些任务会拖慢作业的整体执行进度。为了避免这种情况发生,Hadoop采用了推测执行(Speculative E...原创 2019-11-08 00:00:30 · 130 阅读 · 0 评论 -
(第九章) Hive企业级优化之JVM重用
Hive企业级优化之JVM重用JVM重用是Hadoop调优参数的内容,其对Hive的性能具有非常大的影响,特别是对于很难避免小文件的场景或task特别多的场景,这类场景大多数执行时间都很短。Hadoop的默认配置通常是使用派生JVM来执行map和Reduce任务的。这时JVM的启动过程可能会造成相当大的开销,尤其是执行的job包含有成百上千task任务的情况。JVM重用可以使得JVM实例在同...原创 2019-11-07 23:57:42 · 146 阅读 · 0 评论 -
(第九章) Hive企业级优化之严格模式
Hive企业级优化之严格模式Hive提供了一个严格模式,可以防止用户执行那些可能意想不到的不好的影响的查询。通过设置属性hive.mapred.mode值为默认是非严格模式nonstrict 。开启严格模式需要修改hive.mapred.mode值为strict,开启严格模式可以禁止3种类型的查询。<property> <name>hive.mapred.m...原创 2019-11-07 23:54:10 · 107 阅读 · 0 评论 -
(第九章) Hive企业级优化之并行执行
Hive企业级优化之并行执行Hive会将一个查询转化成一个或者多个阶段。这样的阶段可以是MapReduce阶段、抽样阶段、合并阶段、limit阶段。或者Hive执行过程中可能需要的其他阶段。默认情况下,Hive一次只会执行一个阶段。不过,某个特定的job可能包含众多的阶段,而这些阶段可能并非完全互相依赖的,也就是说有些阶段是可以并行执行的,这样可能使得整个job的执行时间缩短。不过,如果有更多...原创 2019-11-07 23:51:21 · 156 阅读 · 0 评论 -
(第九章) Hive企业级优化之数据倾斜
Hive企业级优化之数据倾斜9.4.1 合理设置Map数1)通常情况下,作业会通过input的目录产生一个或者多个map任务。主要的决定因素有:input的文件总个数,input的文件大小,集群设置的文件块大小。2)是不是map数越多越好?答案是否定的。如果一个任务有很多小文件(远远小于块大小128m),则每个小文件也会被当做一个块,用一个map任务来完成,而一个map任务启动和初始化...原创 2019-11-07 23:49:01 · 126 阅读 · 0 评论 -
(第九章) Hive企业级调优之动态分区调整
Hive企业级调优之动态分区调整关系型数据库中,对分区表Insert数据时候,数据库自动会根据分区字段的值,将数据插入到相应的分区中,Hive中也提供了类似的机制,即动态分区(Dynamic Partition),只不过,使用Hive的动态分区,需要进行相应的配置。1.开启动态分区参数设置(1)开启动态分区功能(默认true,开启)hive.exec.dynamic.partition=...原创 2019-11-07 23:38:23 · 131 阅读 · 0 评论 -
(第九章) Hive企业级调优之行列过滤
Hive企业级调优之行列过滤列处理:在SELECT中,只拿需要的列,如果有,尽量使用分区过滤,少用SELECT *。行处理:在分区剪裁中,当使用外关联时,如果将副表的过滤条件写在Where后面,那么就会先全表关联,之后再过滤,比如:案例实操:1.测试先关联两张表,再用where条件过滤hive (default)> select o.id from bigtable bjoin...原创 2019-11-07 23:32:06 · 323 阅读 · 0 评论 -
(第九章) Hive企业级调优之Count(Distinct) 去重统计
Hive企业级调优之Count(Distinct) 去重统计数据量小的时候无所谓,数据量大的情况下,由于COUNT DISTINCT操作需要用一个Reduce Task来完成,这一个Reduce需要处理的数据量太大,就会导致整个Job很难完成,一般COUNT DISTINCT使用先GROUP BY再COUNT的方式替换:案例实操1.创建一张大表hive (default)> cre...原创 2019-11-07 23:27:57 · 417 阅读 · 0 评论 -
(第九章) Hive企业级调优之Group By
Hive企业级调优之Group By默认情况下,Map阶段同一Key数据分发给一个reduce,当一个key数据过大时就倾斜了。并不是所有的聚合操作都需要在Reduce端完成,很多聚合操作都可以先在Map端进行部分聚合,最后在Reduce端得出最终结果。1.开启Map端聚合参数设置(1)是否在Map端进行聚合,默认为Truehive.map.aggr = true(2)在Map端进...原创 2019-11-07 23:18:54 · 212 阅读 · 1 评论 -
(第九章) Hive企业级调优之MapJoin
Hive企业级调优之MapJoin如果不指定MapJoin或者不符合MapJoin的条件,那么Hive解析器会将Join操作转换成Common Join,即:在Reduce阶段完成join。容易发生数据倾斜。可以用MapJoin把小表全部加载到内存在map端进行join,避免reducer处理。1.开启MapJoin参数设置(1)设置自动选择Mapjoinset hive.auto.co...原创 2019-11-07 23:13:58 · 213 阅读 · 0 评论 -
(第九章) Hive企业级调优之大表 Join 大表
Hive企业级调优之大表 Join 大表1.空KEY过滤有时join超时是因为某些key对应的数据太多,而相同key对应的数据都会发送到相同的reducer上,从而导致内存不够。此时我们应该仔细分析这些异常的key,很多情况下,这些key对应的数据是异常数据,我们需要在SQL语句中进行过滤。例如key对应的字段为空,操作如下:案例实操(1)配置历史服务器配置mapred-site.xm...原创 2019-11-07 23:03:59 · 777 阅读 · 0 评论 -
(第九章) Hive企业级调优之小表、大表Join
Hive企业级调优之小表、大表Join将key相对分散,并且数据量小的表放在join的左边,这样可以有效减少内存溢出错误发生的几率;再进一步,可以使用map join让小的维度表(1000条以下的记录条数)先进内存。在map端完成reduce。实际测试发现:新版的hive已经对小表JOIN大表和大表JOIN小表进行了优化。小表放在左边和右边已经没有明显区别。案例实操1.需求测试大表JO...原创 2019-11-07 22:59:51 · 502 阅读 · 0 评论 -
(第九章) Hive企业级调优之本地模式
Hive企业级调优之本地模式大多数的Hadoop Job是需要Hadoop提供的完整的可扩展性来处理大数据集的。不过,有时Hive的输入数据量是非常小的。在这种情况下,为查询触发执行任务消耗的时间可能会比实际job的执行时间要多的多。对于大多数这种情况,Hive可以通过本地模式在单台机器上处理所有的任务。对于小数据集,执行时间可以明显被缩短。用户可以通过设置hive.exec.mode.lo...原创 2019-11-07 22:51:12 · 164 阅读 · 0 评论 -
(第九章) Hive企业级调优之Fetch抓取
Fetch抓取Fetch抓取是指,Hive中对某些情况的查询可以不必使用MapReduce计算。例如:SELECT * FROM employees;在这种情况下,Hive可以简单地读取employee对应的存储目录下的文件,然后输出查询结果到控制台。在hive-default.xml.template文件中hive.fetch.task.conversion默认是more,老版本hive默...原创 2019-11-07 22:45:57 · 307 阅读 · 0 评论 -
(第八章) Hive存储和压缩结合
Hive存储和压缩结合8.6.1 修改Hadoop集群具有Snappy压缩方式1.查看hadoop checknative命令使用[wyh@hadoop104 hadoop-2.7.2]$ hadoop checknative [-a|-h] check native hadoop and compression libraries availability2.查看hadoo...原创 2019-11-07 22:31:21 · 150 阅读 · 0 评论 -
(第八章) Hive压缩和存储之文件存储格式
Hive文件存储格式Hive支持的存储数的格式主要有:TEXTFILE 、SEQUENCEFILE、ORC、PARQUET。8.5.1 列式存储和行式存储1.行存储的特点查询满足条件的一整行数据的时候,列存储则需要去每个聚集的字段找到对应的每个列的值,行存储只需要找到其中一个值,其余的值都在相邻地方,所以此时行存储查询的速度更快。2.列存储的特点因为每个字段的数据聚集存储,在查询...原创 2019-11-07 22:21:08 · 120 阅读 · 0 评论 -
(第八章) Hive压缩和存储之开启Reduce输出阶段压缩
开启Reduce输出阶段压缩当Hive将输出写入到表中时,输出内容同样可以进行压缩。属性hive.exec.compress.output控制着这个功能。用户可能需要保持默认设置文件中的默认值false,这样默认的输出就是非压缩的纯文本文件了。用户可以通过在查询语句或执行脚本中设置这个值为true,来开启输出结果压缩功能。案例实操:1.开启hive最终输出数据压缩功能hive (defa...原创 2019-11-07 22:01:01 · 251 阅读 · 0 评论 -
(第八章) Hive压缩和存储之开启Map输出阶段压缩
开启Map输出阶段压缩开启map输出阶段压缩可以减少job中map和Reduce task间数据传输量。具体配置如下:案例实操:1.开启hive中间传输数据压缩功能hive (default)>set hive.exec.compress.intermediate=true;2.开启mapreduce中map输出压缩功能hive (default)>set mapred...原创 2019-11-07 21:58:09 · 224 阅读 · 0 评论 -
(第八章) Hive压缩和存储之Hadoop压缩配置
Hadoop压缩配置8.2.1 MR支持的压缩编码为了支持多种压缩/解压缩算法,Hadoop引入了编码/解码器,如下表所示:压缩性能的比较:http://google.github.io/snappy/On a single core of a Core i7 processor in 64-bit mode, Snappy compresses at about 250 MB/...原创 2019-11-07 21:46:09 · 174 阅读 · 0 评论 -
(第八章) Hive压缩和存储之Hadoop源码编译支持Snappy压缩
Hadoop源码编译支持Snappy压缩8.1.1 资源准备1.CentOS联网配置CentOS能连接外网。Linux虚拟机ping www.baidu.com 是畅通的注意:采用root角色编译,减少文件夹权限出现问题2.jar包准备(hadoop源码、JDK8 、maven、protobuf)(1)hadoop-2.7.2-src.tar.gz(2)jdk-8u144-linu...原创 2019-11-07 21:26:37 · 200 阅读 · 0 评论 -
(第七章) Hive 函数
大数据生态系统之-Hive 函数学习目标了解Hive内置运算符和内置函数记忆Hive自定义函数的使用方法1-Hive内置运算符和内置函数1.1在 Hive 有四种类型的运算符:关系运算符算术运算符逻辑运算符复杂运算1.2内置函数简单函数: 日期函数 字符串函数 类型转换统计函数:sum avg distinct集合函数:size array...原创 2019-09-18 23:08:35 · 220 阅读 · 0 评论 -
(第六章)hive之查询
hive之查询6.1 基本查询(Select…From)6.1.1 全表和特定列查询1.全表查询hive (default)> select * from emp;2.选择特定列查询hive (default)> select empno, ename from emp;注意:(1)SQL 语言大小写不敏感。(2)SQL 可以写在一行或者多行(3)关键字不能被...原创 2019-10-29 23:27:49 · 447 阅读 · 0 评论 -
(第五章)Hive之DML数据操作
Hive之DML数据操作5.1 数据导入5.1.1 向表中装载数据(Load)1.语法hive> load data [local] inpath '/opt/module/datas/student.txt' overwrite | into table student [partition (partcol1=val1,…)];(1)load data:表示加载数据(2)...原创 2019-10-29 22:38:51 · 262 阅读 · 0 评论 -
(第四章)Hive之DDL数据定义
Hive之DDL数据定义4.1 创建数据库1)创建一个数据库,数据库在HDFS上的默认存储路径是/user/hive/warehouse/*.db。hive (default)> create database db_hive;2)避免要创建的数据库已经存在错误,增加if not exists判断。(标准写法)hive (default)> create database...原创 2019-10-29 22:14:32 · 185 阅读 · 0 评论 -
(第三章)HIve数据类型
HIve数据类型基本数据类型对于Hive的String类型相当于数据库的varchar类型,该类型是一个可变的字符串,不过它不能声明其中最多能存储多少个字符,理论上它可以存储2GB的字符数。集合数据类型Hive有三种复杂数据类型ARRAY、MAP 和 STRUCT。ARRAY和MAP与Java中的Array和Map类似,而STRUCT与C语言中的Struct类似,它封装了一个命名字段...原创 2019-10-14 21:08:43 · 197 阅读 · 0 评论 -
(第二章) Hive安装之Hive常见属性配置
Hive常见属性配置2.9.1 Hive数据仓库位置配置1)Default数据仓库的最原始位置是在hdfs上的:/user/hive/warehouse路径下。2)在仓库目录下,没有对默认的数据库default创建文件夹。如果某张表属于default数据库,直接在数据仓库目录下创建一个文件夹。3)修改default数据仓库原始位置(将hive-default.xml.template如下...原创 2019-11-06 23:22:45 · 165 阅读 · 0 评论 -
(第二章) HIve安装之Hive其他命令操作
Hive其他命令操作1.退出hive窗口:hive(default)>exit;hive(default)>quit;在新版的hive中没区别了,在以前的版本是有的:exit:先隐性提交数据,再退出;quit:不提交数据,退出;2.在hive cli命令窗口中如何查看hdfs文件系统hive(default)>dfs -ls /;3.在hive cli命令...原创 2019-11-06 23:14:34 · 239 阅读 · 0 评论 -
(第二章) HIve安装之Hive常用交互命令
Hive常用交互命令[wyh@hadoop102 hive]$ bin/hive -helpusage: hive -d,--define <key=value> Variable subsitution to apply to hive commands. e.g. -d A=B or --...原创 2019-11-06 23:10:51 · 177 阅读 · 0 评论 -
(第二章) HIve安装之HiveJDBC访问
HiveJDBC访问2.6.1 启动hiveserver2服务[wyh@hadoop102 hive]$ bin/hiveserver22.6.2 启动beeline[wyh@hadoop102 hive]$ bin/beelineBeeline version 1.2.1 by Apache Hivebeeline>2.6.3 连接hiveserver2beeline...原创 2019-11-06 23:06:07 · 181 阅读 · 0 评论 -
(第二章) HIve安装之Hive元数据配置到MySql
Hive元数据配置到MySql2.5.1 驱动拷贝1.在/opt/software/mysql-libs目录下解压mysql-connector-java-5.1.27.tar.gz驱动包[root@hadoop102 mysql-libs]# tar -zxvf mysql-connector-java-5.1.27.tar.gz2.拷贝/opt/software/mysql-lib...原创 2019-11-06 22:46:36 · 196 阅读 · 0 评论 -
(第二章) HIve安装之MySql安装
HIve安装之MySql安装2.4.1 安装包准备1.查看mysql是否安装,如果安装了,卸载mysql(1)查看[root@hadoop102 桌面]# rpm -qa|grep mysqlmysql-libs-5.1.73-7.el6.x86_64(2)卸载[root@hadoop102 桌面]# rpm -e --nodeps mysql-libs-5.1.73-7.el...原创 2019-11-06 22:40:01 · 146 阅读 · 0 评论 -
(第二章) Hive安装之将本地文件导入Hive案例
将本地文件导入Hive案例需求将本地/opt/module/datas/student.txt这个目录下的数据导入到hive的student(id int, name string)表中。1.数据准备在/opt/module/datas这个目录下准备数据(1)在/opt/module/目录下创建datas[wyh@hadoop102 module]$ mkdir datas(2...原创 2019-11-06 22:27:45 · 381 阅读 · 0 评论 -
(第二章) hive安装之Hive安装部署
Hive安装部署1.Hive安装及配置(1)把apache-hive-1.2.1-bin.tar.gz上传到linux的/opt/software目录下(2)解压apache-hive-1.2.1-bin.tar.gz到/opt/module/目录下面[wyh@hadoop102 software]$ tar -zxvf apache-hive-1.2.1-bin.tar.gz -C /...原创 2019-11-06 22:21:45 · 308 阅读 · 0 评论 -
(第二章) HIve安装之Hive安装地址
Hive安装地址1.Hive官网地址http://hive.apache.org/2.文档查看地址https://cwiki.apache.org/confluence/display/Hive/GettingStarted3.下载地址http://archive.apache.org/dist/hive/4.github地址https://github.com/apache/h...原创 2019-11-06 22:05:08 · 279 阅读 · 0 评论 -
(第一章) HIve入门之Hive和数据库比较
Hive和数据库比较由于 Hive 采用了类似SQL 的查询语言 HQL(Hive Query Language),因此很容易将 Hive 理解为数据库。其实从结构上来看,Hive 和数据库除了拥有类似的查询语言,再无类似之处。本文将从多个方面来阐述 Hive 和数据库的差异。数据库可以用在 Online 的应用中,但是Hive 是为数据仓库而设计的,清楚这一点,有助于从应用角度理解 Hive...原创 2019-11-06 21:59:00 · 166 阅读 · 0 评论 -
(第一章) HIve入门之Hive架构原理
HIve入门之Hive架构原理图6-1 Hive架构原理1.用户接口:ClientCLI(hive shell)、JDBC/ODBC(java访问hive)、WEBUI(浏览器访问hive)2.元数据:Metastore元数据包括:表名、表所属的数据库(默认是default)、表的拥有者、列/分区字段、表的类型(是否是外部表)、表的数据所在目录等;默认存储在自带的derby数据库中...原创 2019-11-06 21:56:00 · 172 阅读 · 0 评论 -
(第一章) HIve入门之Hive优缺点
HIve入门之Hive优缺点1.2.1 优点1)操作接口采用类SQL语法,提供快速开发的能力(简单、容易上手)。2)避免了去写MapReduce,减少开发人员的学习成本。3)Hive的执行延迟比较高,因此Hive常用于数据分析,对实时性要求不高的场合。4)Hive优势在于处理大数据,对于处理小数据没有优势,因为Hive的执行延迟比较高。5)Hive支持用户自定义函数,用户可以根据自己...原创 2019-11-06 21:45:41 · 338 阅读 · 0 评论 -
(第一章)Hive入门之什么是Hive
Hive入门之什么是HiveHive:由Facebook开源用于解决海量结构化日志的数据统计。Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张表,并提供类SQL查询功能。本质是:将HQL转化成MapReduce程序1)Hive处理的数据存储在HDFS2)Hive分析数据底层的实现是MapReduce3)执行程序运行在Yarn上...原创 2019-11-06 21:39:29 · 127 阅读 · 0 评论 -
Hive之时间函数
Hive之时间函数1、unix_timestamp()返回当前时区的unix时间戳返回类型:biginthive> select unix_timestamp() from hive_sum limit 1; 14658750162、from_unixtime(bigint unixtime[,string format])时间戳转日期函数返回类型:stringhive...原创 2019-11-06 00:21:18 · 308 阅读 · 0 评论