![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Hive
文章平均质量分 76
thy822
这个作者很懒,什么都没留下…
展开
-
Hive调优篇
不过,某个特定的 job 可能包含众多的阶段,而这些阶段可能并非完全互相依赖的,也就是说有些阶段是可以并行执行的,这样可能使得整个 job 的执行时间缩短。如果向 orc 格式表中,通过 load 方式装载数据,因为文件格式的问题,是会报错的。谓词下推,就是在将过滤条件下推到离数据源更近的地方,最好就是在table_scan时就能过滤掉不需要的数据,在关系代数中谓词是可以左右上下移动的,由于join查询的特殊性,在优化 join condition 中的谓词时,对应不同的 join 类型,有不同的策略。转载 2023-01-11 12:56:16 · 428 阅读 · 0 评论 -
Hive进阶篇」详解存储格式及压缩方式
hive优化除了有hql语句逻辑优化,hql参数调优等等,还有一个不起眼的细节容易被忽视掉,那便是hive数仓模型表的存储格式和压缩方式,hive底层数据是依托在hadoop,以HDFS文件存储在集群上的,hive数仓模型表选择一个合适的存储格式和压缩方式也是hive优化的一点。本篇就来聊一聊这块知识点吧。😄通过大纲提问式进行概览,你能通过文章学到什么:1. hive主要有几种存储格式&压缩方式2. 每种存储格式和压缩方式的细节3. 什么场景使用什么存储格式&压缩方式适场景而选定压缩方式。...转载 2022-08-07 17:00:12 · 1041 阅读 · 0 评论 -
Hive进阶篇」万字长文超详述hive企业级优化
正在上传…重新上传取消一览群山.jpeghive离线数仓开发,一个良好的数据任务,它的运行时长一般是在合理范围内的,当发现报表应用层的指标数据总是产出延迟,排查定位发现是有些任务执行了超10小时这样肯定是不合理的,此时就该想想如何优化ETL任务链路,主要从以下几个角度来考虑问题解决:附上一份个人梳理总结的思维导图部分截图正在上传…重新上传取消hive企业级优化思维导图.png下面就先分享下常见的hive优化策略吧~ 1. 列裁剪和分区裁剪尽量减少直接这种操作,首先可读性不好,根本不知道具体用到哪几个列,其转载 2022-08-07 15:23:16 · 193 阅读 · 0 评论 -
hive优化之——控制hive任务中的map数和reduce数
map的数量通常是由hadoop集群的DFS块大小确定的,也就是输入文件的总块数,正常的map数量的并行规模大致是每一个Node是 10~100个,对于CPU消耗较小的作业可以设置Map数量为300个左右,但是由于hadoop的没一个任务在初始化时需要一定的时间,因此比较合理 的情况是每个map执行的时间至少超过1分钟。前面三个参数确定合并文件块的大小,大于文件块大小128m的,按照128m来分隔,小于128m,大于100m的,按照100m来分隔,把那些小于100m的(包括小文件和分隔大文件剩下的),...转载 2022-08-07 13:45:48 · 2900 阅读 · 1 评论 -
Hive数据倾斜解决方案
数据倾斜是系统不可避免的问题,任何分布式系统都有几率发生数据倾斜,但有些小伙伴在平时工作中感知不是很明显。这里要注意本篇文章的标题—“千亿级数据”,,因为如果一个任务的数据量只有几百万,它即使发生了数据倾斜,所有数据都跑到一台机器去执行,对于几百万的数据量,一台机器执行起来还是毫无压力的,这时数据倾斜对我们感知不大,只有数据达到一个量级时,一台机器应付不了这么多数据,这时如果发生数据倾斜,最后就很难算出结果。所以就需要我们对数据倾斜的问题进行优化,尽量避免或减轻数据倾斜带来的影响。...转载 2022-08-07 11:14:04 · 362 阅读 · 0 评论 -
Hive优化的十大方法
hive 优化转载 2022-08-06 15:07:29 · 10016 阅读 · 2 评论 -
[一起学Hive]之十九-使用Hive API分析HQL的执行计划、Job数量和表的血缘关系
关键字:Hive HQL Job数量、Hive执行计划、Hive LineageInfo本文介绍使用Hive的API获取一条HQL的最终执行计划,从而获取这条HQL的Job数量,另外,介绍使用API分析一条HQL中所包含的输入表和输出表。这些信息在做元数据管理和Hive表的血缘分析时候很有用。Hive在执行一条HQL的时候,会经过以下步骤:语法解析:Antlr定义SQL的语转载 2017-05-17 18:54:28 · 846 阅读 · 0 评论 -
几个连接HiveServer的客户端界面工具
Hive的官网上介绍了三个可以在Windows中通过JDBC连接HiveServer2的图形界面工具,包括:SQuirrel SQL Client、Oracle SQL Developer以及DbVisualizer。之前有文章《http://lxw1234.com/archives/2015/09/519.htm》介绍过SQuirrel SQL Client,这里再简单介绍一下。其中转载 2017-05-17 18:56:58 · 23247 阅读 · 1 评论 -
Hive SQL执行计划深度解析
美团网技术陈纯大作,值得拥有。Hive是基于Hadoop的一个数据仓库系统,在各大公司都有广泛的应用。美团数据仓库也是基于Hive搭建,每天执行近万次的Hive ETL计算流程,负责每天数百GB的数据存储和分析。Hive的稳定性和性能对我们的数据分析非常关键。在几次升级Hive的过程中,我们遇到了一些大大小小的问题。通过向社区的咨询和自己的努力,在解决这些问题的同时我们对Hive将转载 2017-05-18 13:17:35 · 343 阅读 · 0 评论 -
Hive中如何快速的复制一张分区表(包括数据)
关键字:Hive 复制表Hive中有时候会遇到复制表的需求,复制表指的是复制表结构和数据。如果是针对非分区表,那很简单,可以使用CREATE TABLE new_table AS SELECT * FROM old_table;那么如果是分区表呢?首先想到的办法可能是:先创建一张和old_table结构相同的new_table,包括分区;可以使用CREATE转载 2017-05-18 13:38:18 · 1953 阅读 · 0 评论 -
在Hive中实现存储过程–HQL/SQL
关键字:Hive 存储过程、PL/HQL、HQL/SQL、Procedural SQL on Hadoop目前版本的Hive中没有提供类似存储过程的功能,使用Hive做数据开发时候,一般是将一段一段的HQL语句封装在Shell或者其他脚本中,然后以命令行的方式调用,完成一个业务或者一张报表的统计分析。好消息是,现在已经有了Hive存储过程的解决方案(HPL/SQL –Procedu转载 2017-05-18 13:43:55 · 17988 阅读 · 1 评论 -
Hive存储过程HQL/SQL(一)–hplsql命令行
关键字:Hive存储过程、HQL/SQL、hplsql命令行、PL/HQL Command LinePL/HQL主要是通过命令行工具来执行一个SQL查询语句或者是一个SQL脚本。进入hplsql-0.3.11,执行./ hplsql即可显示命令行的用法:[liuxiaowen@dev hplsql-0.3.11]$ ./hplsql usage: hplsql -d,--def转载 2017-05-18 13:45:37 · 3633 阅读 · 0 评论 -
MapReduce和Hive支持递归子目录作为输入
关键字:MapReduce、Hive、子目录、递归、输入、Input、mapreduce.input.fileinputformat.input.dir.recursive、hive.mapred.supports.subdirectories一般情况下,传递给MapReduce和Hive的input文件夹中不能包含子目录,否则就会报错。但后来增加了递归遍历Input目录的功能,这转载 2017-05-18 13:46:16 · 6358 阅读 · 0 评论 -
[一起学Hive]之十四-Hive的元数据表结构详解
关键字:Hive元数据、Hive元数据表结构之前在 “[一起学Hive]之一–Hive概述,Hive是什么”中介绍过,Hive自己维护了一套元数据,用户通过HQL查询时候,Hive首先需要结合元数据,将HQL翻译成MapReduce去执行。本文介绍一下Hive元数据中重要的一些表结构及用途,以Hive0.13为例。文章最后面,会以一个示例来全面了解一下,Hive的元数据是怎转载 2017-05-17 18:45:14 · 726 阅读 · 0 评论 -
Hive - hive.groupby.skewindata环境变量与负载均衡
HiveQL 去重操作和SQL一样,HiveQL中同样支持DISTINCT操作,如下示例:(1) SELECT count(DISTINCT uid) FROM log(2) SELECT ip, count(DISTINCT uid) FROM log GROUP BY ip(3) SELECT ip, count(DISTINCT uid, uname) FROMlog G转载 2017-05-19 11:18:46 · 327 阅读 · 0 评论 -
hive的查询注意事项以及优化总结 .
Hive是将符合SQL语法的字符串解析生成可以在Hadoop上执行的MapReduce的工具。使用Hive尽量按照分布式计算的一些特点来设计sql,和传统关系型数据库有区别,所以需要去掉原有关系型数据库下开发的一些固有思维。基本原则:1:尽量尽早地过滤数据,减少每个阶段的数据量,对于分区表要加分区,同时只选择需要使用到的字段select ... from A转载 2017-05-19 13:12:32 · 255 阅读 · 0 评论 -
Hive 中内部表与外部表的区别与创建方法
先来说下Hive中内部表与外部表的区别: 1)创建表时:创建内部表时,会将数据移动到数据仓库指向的路径;若创建外部表,仅记录数据所在的路径, 不对数据的位置做任何改变。2)删除表时:在删除表的时候,内部表的元数据和数据会被一起删除, 而外部表只删除元数据,不删除数据。这样外部表相对来说更加安全些,数据组织也更加灵活,方便共享源数据。 另外需要注意的是传统数据库对表数据验证是转载 2017-05-21 11:51:55 · 390 阅读 · 0 评论 -
[一起学Hive]之十八-Hive UDF开发
关键字:Hive udf、UDF、GenericUDFHive中,除了提供丰富的内置函数(见[一起学Hive]之二–Hive函数大全-完整版)之外,还允许用户使用Java开发自定义的UDF函数。开发自定义UDF函数有两种方式,一个是继承org.apache.hadoop.hive.ql.exec.UDF,另一个是继承org.apache.hadoop.hive.ql.udf.gen转载 2017-05-17 18:53:37 · 269 阅读 · 0 评论 -
[一起学Hive]之十六-Hive的WEB页面接口-HWI
关键字:Hive WEB接口、Hive HWIHive提供给用户的交互接口一般有三种:Hive命令行(Hive Command Line)、JDBC/ODBC以及Hive WEB Interface(HWI)。对于开发者来说,最常用的是Hive命令行。如果是将Hive开放给数据分析或数据运营人员做即席查询,那么使用Hive WEB页面接口(HWI)应该是比较方便的。本章就介绍一下H转载 2017-05-17 18:52:51 · 600 阅读 · 0 评论 -
Hadoop Hive sql语法详解
Hive 是基于Hadoop 构建的一套数据仓库分析系统,它提供了丰富的SQL查询方式来分析存储在Hadoop 分布式文件系统中的数据,可以将结构化的数据文件映射为一张数据库表,并提供完整的SQL查询功能,可以将SQL语句转换为MapReduce任务进行运行,通过自己的SQL 去查询分析需要的内容,这套SQL 简称Hive SQL,使不熟悉mapreduce 的用户很方便的利用SQ转载 2017-05-16 19:30:50 · 350 阅读 · 0 评论 -
Hive深入浅出
1. Hive是什么1) Hive是什么?这里引用 Hive wiki 上的介绍:Hive is a data warehouse infrastructure built on top of Hadoop. It provides tools to enable easy data ETL, a mechanism to put structures转载 2017-05-16 19:36:14 · 273 阅读 · 0 评论 -
Hadoop集群配置(最全面总结)
通常,集群里的一台机器被指定为 NameNode,另一台不同的机器被指定为JobTracker。这些机器是masters。余下的机器即作为DataNode也作为TaskTracker。这些机器是slaves\官方地址:(http://hadoop.apache.org/common/docs/r0.19.2/cn/cluster_setup.html)1 先决条件确保在你集群中转载 2017-05-16 19:39:12 · 219 阅读 · 0 评论 -
[一起学Hive]—Hive中的数据库(Database)和表(Table)
在 前面的文章 中,介绍了可以把Hive当成一个“数据库”,它也具备传统数据库的数据单元,数据库(Database/Schema)和表(Table)。本文介绍一下Hive中的数据库(Database/Schema)和表(Table)的基础知识,由于篇幅原因,这里只是一些常用的、基础的。二、Hive的数据库和表先看一张草图:Hive结构从图上可以看转载 2017-05-16 19:52:40 · 370 阅读 · 0 评论 -
hive 内部表和外部表的区别和理解
1. 内部表create table test (name string , age string) location '/input/table_data'; 注:hive默认创建的是内部表此时,会在hdfs上新建一个test表的数据存放地load data inpath '/input/data' into table test ;会将hd转载 2017-05-17 14:29:10 · 1235 阅读 · 0 评论 -
[一起学Hive]之九-Hive的查询语句SELECT
八、Hive的查询语句SELECT在所有的数据库系统中,SELECT语句是使用最多,也最复杂的一块,Hive中的查询语句SELECT支持的语法当然也比较复杂,本文只能尽力去介绍。8.1 基础查询语法Hive中的SELECT基础语法和标准SQL语法基本一致,支持WHERE、DISTINCT、GROUP BY、ORDER BY、HAVING、LIMIT、子查询等;语法如下:转载 2017-05-17 17:36:16 · 406 阅读 · 0 评论 -
[一起学Hive]之十-Hive中Join的原理和机制
九、Hive中Join的原理和机制笼统的说,Hive中的Join可分为Common Join(Reduce阶段完成join)和Map Join(Map阶段完成join)。本文简单介绍一下两种join的原理和机制。9.1 Hive Common Join如果不指定MapJoin或者不符合MapJoin的条件,那么Hive解析器会将Join操作转换成Common Join,即:转载 2017-05-17 17:49:04 · 200 阅读 · 0 评论 -
[一起学Hive]之十一-Hive中Join的类型和用法
Hive中除了支持和传统数据库中一样的内关联、左关联、右关联、全关联,还支持LEFT SEMI JOIN和CROSS JOIN,但这两种JOIN类型也可以用前面的代替。注意:Hive中Join的关联键必须在ON ()中指定,不能在Where中指定,否则就会先做笛卡尔积,再过滤。数据准备:hive> desc lxw1234_a;OKid转载 2017-05-17 17:50:09 · 258 阅读 · 0 评论 -
[一起学Hive]之十二-Hive SQL的优化
十一、Hive SQL的优化 本章只是从HQL层面介绍一下,日常开发HQL中需要注意的一些优化点,不涉及Hadoop层面的参数、配置等优化。其中大部分是我之前发过的博客文章,这里整理了下。11.1 使用分区剪裁、列剪裁在SELECT中,只拿需要的列,如果有,尽量使用分区过滤,少用SELECT *。在分区剪裁中,当使用外关联时,如果将副表的过滤条件写在转载 2017-05-17 18:00:20 · 244 阅读 · 0 评论 -
[一起学Hive]之二–Hive函数大全-完整版
Hive函数大全–完整版现在虽然有很多SQL ON Hadoop的解决方案,像Spark SQL、Impala、Presto等等,但就目前来看,在基于Hadoop的大数据分析平台、数据仓库中,Hive仍然是不可替代的角色。尽管它的相应延迟大,尽管它启动MapReduce的时间相当长,但是它太方便、功能太强大了,做离线批量计算、ad-hoc查询甚至是实现数据挖掘算法,而且,和HBase、Sp转载 2017-05-17 18:04:40 · 498 阅读 · 0 评论 -
[一起学Hive]之五-Hive的视图和分区
同关系型数据库一样,Hive中也支持视图(View)和分区(Partition),但与关系型数据库中的有所区别,本文简单介绍Hive中视图和分区的示例。在真实业务场景下,视图的应用比较少,分区使用的非常多,因此建议对分区这块多花的时间来了解。 四、Hive的视图和分区4.1 Hive中的视图和关系型数据库一样,Hive中也提供了视图的功能,注意Hive中视图转载 2017-05-17 18:14:43 · 685 阅读 · 0 评论 -
[一起学Hive]之七-向Hive表中加载数据
在Hive中建好表之后,需要将数据加载进来,以便做后续查询分析,本文介绍向Hive表中加载数据的几种方式。6.1 建表时候直接指定如果你的数据已经在HDFS上存在,已经为结构化数据,并且数据所在的HDFS路径不需要维护,那么可以直接在建表的时候使用location指定数据所在的HDFS路径即可。比如: CREATE [EXTERNAL] TABLE t_lxw1234转载 2017-05-17 18:18:35 · 262 阅读 · 0 评论 -
Hive分析窗口函数(二) NTILE,ROW_NUMBER,RANK,DENSE_RANK
本文中介绍前几个序列函数,NTILE,ROW_NUMBER,RANK,DENSE_RANK,下面会一一解释各自的用途。Hive版本为 apache-hive-0.13.1注意: 序列函数不支持WINDOW子句。(什么是WINDOW子句,点此查看前面的文章 )数据准备:cookie1,2015-04-10,1cookie1,2015-04-11,5cookie1,2015转载 2017-05-17 18:25:51 · 241 阅读 · 0 评论 -
Hive分析窗口函数(一) SUM,AVG,MIN,MAX
Hive中提供了越来越多的分析函数,用于完成负责的统计分析。抽时间将所有的分析窗口函数理一遍,将陆续发布。今天先看几个基础的,SUM、AVG、MIN、MAX。用于实现分组内所有和连续累积的统计。Hive版本为 apache-hive-0.13.1数据准备CREATE EXTERNAL TABLE lxw1234 (cookieid string,createti转载 2017-05-17 18:26:43 · 249 阅读 · 0 评论 -
[一起学Hive]之十三-Hive整合HBase,操作HBase表
十二、Hive整合HBase,操作HBase表HBase是被设计用来做k-v查询的,但有时候,也会遇到基于HBase表的复杂统计,写MR很不方便。Hive考虑到了这点,提供了操作HBase表的接口。关于Hive操作HBase表的原理,请参考我之前的博文: http://lxw1234.com/archives/2015/04/101.htm值得商榷的转载 2017-05-17 18:32:38 · 766 阅读 · 0 评论 -
[一起学Hive]之十五-分析Hive表和分区的统计信息(Statistics)
关键字:Hive统计信息、分析Hive表、Hive Statistics类似于Oracle的分析表,Hive中也提供了分析表和分区的功能,通过自动和手动分析Hive表,将Hive表的一些统计信息存储到元数据中。表和分区的统计信息主要包括:行数、文件数、原始数据大小、所占存储大小、最后一次操作时间等;14.1 新表的统计信息对于一个新创建的表,默认情况下,如果通过IN转载 2017-05-17 18:49:18 · 903 阅读 · 0 评论 -
使用Sqoop将HDFS/Hive/HBase与MySQL/Oracle中的数据相互导入、导出
一、使用Sqoop将MySQL中的数据导入到HDFS/Hive/HBase 二、使用Sqoop将HDFS/Hive/HBase中的数据导出到MySQL2.3 HBase中的数据导出到mysql目前没有直接的命令将HBase中的数据导出到MySQL,但可以先将HBase中的数据导出到HDFS中,再将数据导出到MySQL。三、使用Sqoop将Orac转载 2017-05-16 13:19:21 · 415 阅读 · 0 评论