Hive
hive
大数据流浪法师
个人兴趣领域:大数据、人工智能、游戏Fix技术
展开
-
Hive 常见问题总结
row_number是排完序后再取topN,相同于去重原创 2020-05-28 10:51:48 · 230 阅读 · 0 评论 -
两种方式(Java远程连接、本地shell脚本)遍历加载HDFS一个目录下的多个数据文件到hive表
现有如下,一堆数据文件,以日期命名,因为需要按分区加载到一个分区表中。如果手动加载,会浪费很多时间,所以有两种方式实现自动遍历并加载到hive表。第一种:JAVA代码连接hdfs,读取每一个数据,远程执行hive -e,这样会浪费大量的中间过程。package com.czxy.demo05;import net.neoremind.sshxcute.core.ConnBean;i...原创 2019-12-25 21:45:44 · 1020 阅读 · 1 评论 -
Hive Join详细用法
内连接 inner joinINNER JOIN基本语法如下:SELECT tableA.column1, tableB.column2...FROM tableA INNER JOIN tableBON tableA.common_field = tableB.common_field;左外连接 left joinLEFT JOIN的基本语法如下:SELECT tabl...原创 2019-12-05 18:07:15 · 498 阅读 · 0 评论 -
Hive 表的优化
表的优化JoinJoin原则:1)小表Join大表将key相对分散,并且数据量小的表放在join的左边,这样可以有效减少内存溢出错误发生的几率;再进一步,可以使用Group让小的维度表(1000条以下的记录条数)先进内存。在map端完成reduce。select count(distinct s_id) from score;select count(s_id) from scor...原创 2019-11-28 22:10:05 · 361 阅读 · 0 评论 -
Hive 推测执行
推测执行在分布式集群环境下,因为程序Bug(包括Hadoop本身的bug),负载不均衡或者资源分布不均等原因,会造成同一个作业的多个任务之间运行速度不一致,有些任务的运行速度可能明显慢于其他任务(比如一个作业的某个任务进度只有50%,而其他所有任务已经运行完毕),则这些任务会拖慢作业的整体执行进度。为了避免这种情况发生,Hadoop采用了推测执行(Speculative Execution)机...原创 2019-11-28 21:56:17 · 499 阅读 · 0 评论 -
Hive JVM重用
JVM重用JVM重用是Hadoop调优参数的内容,其对Hive的性能具有非常大的影响,特别是对于很难避免小文件的场景或task特别多的场景,这类场景大多数执行时间都很短。Hadoop的默认配置通常是使用派生JVM来执行map和Reduce任务的。这时JVM的启动过程可能会造成相当大的开销,尤其是执行的job包含有成百上千task任务的情况。JVM重用可以使得JVM实例在同一个job中重新使...原创 2019-11-28 21:53:29 · 885 阅读 · 1 评论 -
Hive 严格模式
严格模式Hive提供了一个严格模式,可以防止用户执行“高危”的查询。通过设置属性hive.mapred.mode值为默认是非严格模式nonstrict 。开启严格模式需要修改hive.mapred.mode值为strict,开启严格模式可以禁止3种类型的查询。<property> <name>hive.mapred.mode</name> ...原创 2019-11-28 21:43:15 · 188 阅读 · 0 评论 -
Hive 并行执行
Hive 并行执行Hive会将一个查询转化成一个或者多个阶段。这样的阶段可以是MapReduce阶段、抽样阶段、合并阶段、limit阶段。或者Hive执行过程中可能需要的其他阶段。默认情况下,Hive一次只会执行一个阶段。不过,某个特定的job可能包含众多的阶段,而这些阶段可能并非完全互相依赖的,也就是说有些阶段是可以并行执行的,这样可能使得整个job的执行时间缩短。不过,如果有更多的阶段...原创 2019-11-28 21:40:20 · 1470 阅读 · 0 评论 -
Hive 数据倾斜与Map个数与Reduce个数相关
Map数通常情况下,作业会通过input的目录产生一个或者多个map任务。主要的决定因素有:input的文件总个数,input的文件大小,集群设置的文件块大小(目前为128M,可在hive中通过set dfs.block.size;命令查看到,该参数不能自定义修改);举例:a)一个大文件: 假设input目录下有1个文件a,大小为780M,那么hadoop会将该文件a分隔成7个块(...原创 2019-11-28 21:37:21 · 408 阅读 · 0 评论 -
Hive 调优 分区裁剪、列裁剪
使用分区剪裁、列剪裁在SELECT中,只拿需要的列,如果有,尽量使用分区过滤,少用SELECT *。在分区剪裁中,当使用外关联时,如果将副表的过滤条件写在Where后面,那么就会先全表关联,之后再过滤,比如:环境准备:create table ori(id bigint, time bigint, uid string, keyword string, url_rank int, clic...原创 2019-11-28 21:35:20 · 2384 阅读 · 2 评论 -
Hive 调优 动态分区调整
动态分区调整关系型数据库中,对分区表Insert数据时候,数据库自动会根据分区字段的值,将数据插入到相应的分区中。Hive中也提供了类似的机制,即动态分区(Dynamic Partition),只不过,使用Hive的动态分区,需要进行相应的配置。以第一个表的分区规则,来对应第二个表的分区规则,将第一个表的所有分区,全部拷贝到第二个表中来,第二个表在加载数据的时候,不需要指定分区了,直接用第一个...原创 2019-11-28 21:32:01 · 1303 阅读 · 0 评论 -
Hive 调优 Group By 、Count(distinct)、笛卡尔积
Group By默认情况下,Map阶段同一Key数据分发给一个reduce,当一个key数据过大时就倾斜了。并不是所有的聚合操作都需要在Reduce端完成,很多聚合操作都可以先在Map端进行部分聚合,最后在Reduce端得出最终结果。开启Map端聚合参数设置(1)是否在Map端进行聚合,默认为Trueset hive.map.aggr = true;(2)在Map端进行聚合操作的条目...原创 2019-11-28 21:30:57 · 1160 阅读 · 2 评论 -
Hive 调优 本地模式
本地模式本地模式就是不上传集群,在本节点上运行。大多数的Hadoop Job是需要Hadoop提供的完整的可扩展性来处理大数据集的。不过,有时Hive的输入数据量是非常小的。在这种情况下,为查询触发执行任务时消耗可能会比实际job的执行时间要多的多。对于大多数这种情况,Hive可以通过本地模式在单台机器上处理所有的任务。对于小数据集,使用本地模式执行时间可以明显被缩短。用户可以通过设...原创 2019-11-28 21:26:15 · 506 阅读 · 0 评论 -
Hive 调优 Fetch抓取
Fetch抓取Hive中对某些情况的查询可以不必使用MapReduce计算。例如:SELECT * FROM employees;在这种情况下,Hive可以简单地读取employee对应的存储目录下的文件,然后输出查询结果到控制台。在hive-default.xml.template文件中hive.fetch.task.conversion默认是more,老版本hive默认是minimal,...原创 2019-11-28 21:22:54 · 204 阅读 · 0 评论 -
Hive ORC格式存储时压缩测试
存储和压缩结合官网:https://cwiki.apache.org/confluence/display/Hive/LanguageManual+ORCORC存储方式的压缩:KeyDefaultNotesorc.compressZLIBhigh level compression (one of NONE, ZLIB, SNAPPY)orc.compress...原创 2019-11-28 21:14:24 · 1549 阅读 · 5 评论 -
Hive 数据存储格式
Hive数据存储格式Hive支持的存储数据的格式主要有:TEXTFILE(行式存储) 、SEQUENCEFILE(行式存储)、ORC(列式存储)、PARQUET(列式存储)。文章目录Hive数据存储格式列式存储和行式存储TEXTFILE格式ORC格式PARQUET格式主流文件存储格式对比实验TextFileORCParquet存储文件的压缩比总结:存储文件的查询速度测试:TextFileORC...原创 2019-11-28 20:59:37 · 360 阅读 · 0 评论 -
Hive 数据压缩
压缩格式 工具 算法 文件扩展名 是否可切分DEFAULT 无 DEFAULT .deflate 否Gzip gzip DEFAULT .gz 否bzip2 bzip2 bzip2 .bz2 是LZO lzop LZO .lzo 否LZ4 无 LZ4 .lz4 否Snappy 无 Snappy .snappy 否...原创 2019-11-28 20:29:28 · 276 阅读 · 0 评论 -
Hive 基础知识中的重点
前言马上就要第三次月考,其中五颗星星的是必考内容少于5颗为可能考的内容,星星越多几率越大。Hive 自定义函数 Reflect版★★★任意编写java类package com.czxy.demo01;public class Test { public static String getStr(String str){ return str+"123"; ...原创 2019-11-25 17:40:13 · 292 阅读 · 0 评论 -
Hive 自定义函数 Reflect版
开idea写如下代码进行测试:package com.czxy.demo01;public class Test { public static String getStr(String str){ return str+"123"; }}把代码打成jar包上传到虚拟机任意位置[root@hadoop01 ~]# cd /home[root...原创 2019-11-21 20:22:59 · 225 阅读 · 0 评论 -
Hive 自定义函数UDF版
Hive自定义函数Hive 自带了一些函数,比如:max/min等,但是数量有限,自己可以通过自定义UDF来方便的扩展。当Hive提供的内置函数无法满足你的业务处理需要时,就可以考虑使用用户自定义函数(UDF:user-defined function)。根据用户自定义函数类别分为以下三种:(1)UDF(User-Defined-Function)一进一出(2)UDAF(User-De...原创 2019-11-21 18:07:28 · 185 阅读 · 0 评论 -
Hive 内置函数
内置函数内容较多,见《Hive官方文档》https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF1)查看系统自带的函数hive> show functions;hive (default)> show functions;OKtab_name!!=%&*+-/<...原创 2019-11-21 15:03:33 · 164 阅读 · 0 评论 -
Hive 参数配置
Hive 参数配置官方文档:https://cwiki.apache.org/confluence/display/Hive/Configuration+Properties开发Hive应用时,不可避免地需要设定Hive的参数。设定Hive的参数可以调优HQL代码的执行效率,或帮助定位问题。然而实践中经常遇到的一个问题是,为什么设定的参数没有起作用?这通常是错误的设定方式导致的。对于一般参...原创 2019-11-21 14:29:23 · 286 阅读 · 0 评论 -
Hive 查询语法★★★
文章目录SELECT基本的Select操作全表查询选择特定列查询列别名常用函数求总行数(count)求分数的最大值(max)求分数的最小值(min)求分数的总和(sum)求分数的平均值(avg)LIMIT语句WHERE语句比较运算符(BETWEEN/IN/ IS NULL)LIKE和RLIKE逻辑运算符(AND/OR/NOT)分组GROUP BY语句HAVING语句JOIN语句等值JOIN表的别名...原创 2019-11-21 08:30:18 · 494 阅读 · 0 评论 -
Hive 表的数据导出
文章目录Hive:表的数据导出insert overwrite导出Hadoop命令导出到本地hive shell 命令导出export导出到HDFS上sqoop导出Hive:表的数据导出将hive表中的数据导出到其他任意目录,例如linux本地磁盘,例如hdfs,例如mysql等等insert overwrite导出1)将查询的结果导出到本地insert overwrite local ...原创 2019-11-20 20:51:40 · 327 阅读 · 0 评论 -
Hive 表的数据加载
文章目录hive表中加载数据直接向分区表中插入数据通过查询插入数据多插入模式查询语句中创建表并加载数据(as select)创建表时通过location指定加载数据路径hive表中加载数据准备数据:链接:https://pan.baidu.com/s/1e5Zcrefs_UgIjAvaCjuAYg提取码:njk8直接向分区表中插入数据create table score3 like s...原创 2019-11-20 20:07:03 · 404 阅读 · 0 评论 -
Hive 表的修改和删除
表重命名基本语法:alter table old_table_name rename to new_table_name;把表score4修改成score5alter table score4 rename to score5;hive (myhive)> show tables;OKtab_namecoursecourse_commonscorescor...原创 2019-11-20 17:05:24 · 1001 阅读 · 0 评论 -
Hive 分桶表
分桶表将数据按照指定的字段进行分成多个桶中去,说白了就是将数据按照字段进行划分,可以将数据按照字段划分到多个文件当中去开启hive的桶表功能set hive.enforce.bucketing=true;设置reduce的个数(相当于创建)set mapreduce.job.reduces=3;创建桶表create table course (c_id string,c_name...原创 2019-11-20 16:49:20 · 211 阅读 · 0 评论 -
Hive 分区表
分区表在大数据中,最常用的一种思想就是分治,我们可以把大的文件切割划分成一个个的小的文件,这样每次操作一个小的文件就会很容易了,同样的道理,在hive当中也是支持这种思想的,就是我们可以把大的数据,按照每天,或者每小时进行切分成一个个的小的文件,这样去操作小的文件就会容易得多了创建分区表语法create table score(s_id string,c_id string, s_score...原创 2019-11-20 16:34:22 · 291 阅读 · 0 评论 -
Hive 外部表
外部表:外部表说明:外部表因为是指定其他的hdfs路径的数据加载到表当中来,所以hive表会认为自己不完全独占这份数据,所以删除hive表的时候,数据仍然存放在hdfs当中,不会删掉管理表和外部表的使用场景:每天将收集到的网站日志定期流入HDFS文本文件。在外部表(原始日志表)的基础上做大量的统计分析,用到的中间表、结果表使用内部表存储,数据通过SELECT+INSERT进入内部表。操作...原创 2019-11-20 15:19:20 · 617 阅读 · 1 评论 -
Hive的基本操作
Hive基本操作首先,hive一下,进入交互式hive[root@hadoop01 sbin]# hivewhich: no hbase in (/usr/lib64/qt-3.3/bin::/export/servers/hive-1.1.0-cdh5.14.0//bin::/export/servers/hadoop-2.6.0-cdh5.14.0/bin:/export/servers...原创 2019-11-20 14:45:16 · 551 阅读 · 0 评论 -
Hive的三种使用方式
1.6.2 使用方式第一种交互方式:Hive交互shellcd /export/servers/hive-1.1.0-cdh5.14.0bin/hive查看所有的数据库hive (default)> show databases;创建一个数据库hive (default)> create database myhive;使用该数据库并创建数据库表hive (defau...原创 2019-11-20 09:38:13 · 751 阅读 · 0 评论 -
Hive安装
下载Hive下载地址:https://hive.apache.org/downloads.html这是我用的版本:链接:https://pan.baidu.com/s/1AfY0kF4CGC69s16WsahH_w 提取码:dvtt两个都要下载,有用。derby版hive直接使用:hive的内置数据库是derby,所以hive解压了就能直接用上传并解压hive首先把hive压...原创 2019-11-19 15:05:42 · 230 阅读 · 3 评论 -
Hive基本概念
大数据动物园:这玩意就是hive什么是HiveHive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供类SQL查询功能(HQL)。其本质是将SQL转换为MapReduce的任务进行运算,底层由HDFS来提供数据的存储,hive可以理解为一个将SQL转换为MapReduce的任务的工具。为什么使用Hive直接使用hadoop所面临的问题 :人员...原创 2019-11-19 14:17:53 · 321 阅读 · 0 评论
分享