![](https://img-blog.csdnimg.cn/20200519111214175.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
---Hive
大数据学习二级分类,涉及HIVE。
老牌数据仓库,经久耐用,案例众多。
寒 暄
自渡
展开
-
Hive3 on Spark2
Spark2下载spark2纯净版wget https://archive.apache.org/dist/spark/spark-2.4.7/spark-2.4.7-bin-without-hadoop.tgz安装配置纯净版默认配置不赘述。删除多余的cmd文件cd 纯净版解压路径rm -rf */*.cmd配置spark-env.shexport HADOOP_HOME=/opt/modules/hadoop3export SPARK_DIST_CLASSPATH=$(${原创 2021-08-13 14:41:51 · 636 阅读 · 1 评论 -
Hive性能调优策略
利用分区表优化场景:在业务环境中,以某个字段为筛选条件的需求增加解决方法:建立以这个字段为分区的分区表,这样进行查询时只需要指定这个分区就不再需要进行全表扫描利用分桶表优化场景:需要频繁进行采样解决方法:分桶表会使用hash算法将写入的数据随机的分入桶中,如果要进行采样的话,直接选择一个桶即可。补充三种采样的方法 :-- 分桶抽象select * from tmp_table tablesample(bucket 3 out of 32);-- 3是抽取的分桶号,分桶号从0开始,32为总分原创 2020-08-29 18:36:56 · 971 阅读 · 0 评论 -
Hive性能调优之推测执行
在作业执行的过程中数据倾斜发生的可能性是很大的,甚至有可能只有一个task执行到50%,但是其他task早早执行完毕了。这就需要推测执行,hadoop的推测执行机制会给这些有可能需要长时间才可以执行完的task准备一个备份,一旦task执行缓慢,那么备份task也会执行task的工作,看哪个先执行完就使用哪个的结果。但是如果数据量过于庞大,备份task有可能直接打垮集群。<property> <name>hive.mapred.reduce.tasks.speculative原创 2020-07-18 15:19:59 · 1059 阅读 · 0 评论 -
Hive性能调优之JVM重用
Hadoop默认为每个task(map task 或者 reduce task) 启动一个jvm。鉴于目前小文件过多的问题,设置了jvm复用,即一个job内,多个task共享jvm,避免多次启动jvm,浪费资源和时间。<property> <name>mapreduce.job.jvm.numtasks</name> <value>10</value> <description> <!--每个jvm要运行多少个原创 2020-07-18 15:04:57 · 1753 阅读 · 0 评论 -
Hive性能调优之严格模式
严格模式涉及到了一个参数 hive.mapred.mode想要设置严格模式需要把他的值修改为strict。在hive-site.xml中这个配置是这么描述的:<property> <name>hive.mapred.mode</name> <value>strict</value> <description> The mode in which the Hive operations are being performe原创 2020-07-18 14:51:12 · 694 阅读 · 0 评论 -
Hive性能调优之并行执行
并行执行就是用系统资源去换取执行时间。并行执行会占用大量系统资源来加速SQL任务的执行,如果系统资源本身不多的话就不要用这个配置。-- 开启并行执行set hive.exec.parallel=true; -- 设置并行度,默认是8set hive.exec.parallel.thread.number=16; ...原创 2020-07-18 14:38:39 · 1402 阅读 · 0 评论 -
Hive性能调优之合理调整Map与Reduce数量
合理设置map数量map阶段主要涉及两个问题:小文件太多或者大文件过于负责。对应的解决方案就是减少map数量与增加map数量。减少map数就是增加每个map处理的文件数量,用于处理大量小文件,间接加快速度。-- CombineHiveInputFormat有对小文件合并的处理,hive2.X已经默认使用CombineHiveInputFormatset hive.input.format=org.apache.hadoop.hive.ql.io.CombineHiveInputFormat;原创 2020-07-18 14:23:12 · 1377 阅读 · 0 评论 -
Hive性能调优之动态分区调整
动态分区Hive中有两种分区模式:静态分区动态分区Hive默认情况下是必须有一个静态分区,其他分区为动态分区(动态分区的功能默认开启)。同时也可以调配参数设置全动态分区,而且也可以调配一个job与节点上的动态分区数来加快job执行速度。-- 开启动态分区功能(默认开启)set hive.exec.dynamic.partition = true;-- 启用非严格模式(这样所有的分区都可以是动态分区)set hive.exec.dynamic.partition.mode = nonst原创 2020-07-18 11:26:03 · 1520 阅读 · 1 评论 -
Hive性能调优之Group By
默认情况下,map阶段同一key数据分发给同一reduce,如果单一key过大就很容易造成数据倾斜。(100条数据分组后一组90条,一组10条,这就会数据倾斜)这样的话,我们就可以预先在map端进行一些聚合操作,减轻reduce端的压力。常用参数:--是否在 Map 端进行聚合,默认为 Truehive.map.aggr = true--在 Map 端进行聚合操作的条目数目hive.groupby.mapaggr.checkinterval = 100000--有数据倾斜的时候进行负载均衡(默原创 2020-07-17 20:41:25 · 1102 阅读 · 0 评论 -
Hive性能调优之表的优化
大表、小表Join把key相对分散,并且数据量小的表放在join左边,这样可以有效减少内存溢出错误发生的几率。但是新版的hive已经对大小表join进行了优化,hive会自己检测大小表。原创 2020-07-17 16:14:43 · 409 阅读 · 0 评论 -
Hive性能调优之Fetch抓取
Fetch抓取是指hive在某些情况的查询可以不必使用MapReduce计算,例如在执行一个简单的select * from XX 时,我们只需要简单的进行抓取对应目录下的数据即可。在hive-default.xml.template中,hive.fetch.task.conversion默认是morn,老版本中默认是minimal。该属性为morn时,在全局查找,字段查找,limit查找等都不走MapReduce。<property> <name>hive.fetch原创 2020-07-10 21:12:05 · 1238 阅读 · 0 评论 -
1.4.3.2 Hive小试牛刀
总目录:https://www.jianshu.com/p/e406a9bc93a9Hadoop - 子目录:https://www.jianshu.com/p/9428e443b7fd基础命令HIVE使用的命令HQL,是基于SQL95的,基础命令与SQL语法一致。查看数据库show databases;查看数据库进入默认数据库use def...原创 2020-04-04 15:34:47 · 141 阅读 · 0 评论 -
1.4.3Hive(理论)
总目录:https://www.jianshu.com/p/e406a9bc93a9Hadoop - 子目录:https://www.jianshu.com/p/9428e443b7fd什么是HIVEHIVE是由Facebook开源(目前移交Apache)用于解决海量结构化日志的数据统计。他是一个基于Hadoop的数据仓库工具,可以将结构化数据映射成一张表,并提供类SQL的...原创 2020-03-30 09:55:04 · 141 阅读 · 0 评论 -
1.4.3.1Hive部署
总目录:https://www.jianshu.com/p/e406a9bc93a9Hadoop - 子目录:https://www.jianshu.com/p/9428e443b7fdhive是一个类似于Hadoop客户端的东西,所以他不是分布式的,直接把他装在经常用的一台主机上就可以,我们这里把他装在了master上。下载地址hive镜像站:https://mirror...原创 2020-04-02 21:40:29 · 184 阅读 · 0 评论 -
1.4.3.8 Hive的函数操作(上)
总目录:https://www.jianshu.com/p/e406a9bc93a9Hadoop - 子目录:https://www.jianshu.com/p/9428e443b7fd这一节说一下HIVE自带的函数。缺失值处理nvl用途:给值为 NULL 的数据赋值。语法:NVL( string1, replace_with)功能:它的功能是如果string1 为...原创 2020-04-12 18:47:04 · 163 阅读 · 0 评论 -
1.4.3.6 Hive的DML操作
总目录:https://www.jianshu.com/p/e406a9bc93a9Hadoop - 子目录:https://www.jianshu.com/p/9428e443b7fd什么是DMLDML--数据操纵语言,用来对数据库中的存储数据进行一些简单操作。数据导入语法load data [local] inpath '文件绝对路径' [overwrite] in...原创 2020-04-10 11:27:50 · 142 阅读 · 0 评论 -
1.4.3.5 Hive的DDL操作
总目录:https://www.jianshu.com/p/e406a9bc93a9Hadoop - 子目录:https://www.jianshu.com/p/9428e443b7fd什么是DDLDDL--数据定义语言,用来定义存储数据的概念,例如库,表等。数据库的增删改查增create database 数据库名;增加hdfs如...原创 2020-04-07 13:59:56 · 400 阅读 · 0 评论 -
1.4.3.4 Hive数据类型
总目录:https://www.jianshu.com/p/e406a9bc93a9Hadoop - 子目录:https://www.jianshu.com/p/9428e443b7fd基本数据类型数据类型表:HIVE数据类型JAVA数据类型长度例子TINYINTbyte1byte有符号整数20SMALINTshort2byte有符号整...原创 2020-04-06 10:22:38 · 125 阅读 · 0 评论 -
1.4.3.3 Hive常用需知
总目录:https://www.jianshu.com/p/e406a9bc93a9Hadoop - 子目录:https://www.jianshu.com/p/9428e443b7fd常用命令行交互命令[root@master ~] hive -husage: hive -d,--define <key=value> Variable su...原创 2020-04-05 08:43:32 · 198 阅读 · 0 评论 -
1.4.3.7 Hive的查询操作
总目录:https://www.jianshu.com/p/e406a9bc93a9Hadoop - 子目录:https://www.jianshu.com/p/9428e443b7fdSELECT [ALL | DISTINCT] select_expr, select_expr, ...FROM table_reference[WHERE where_condition...原创 2020-04-11 20:46:13 · 335 阅读 · 0 评论