- 博客(68)
- 资源 (3)
- 问答 (1)
- 收藏
- 关注
原创 Hive源码分析——Alter Table操作执行流程分析
目录概述过程分析参数介绍初始化类型兼容性检查修改表名操作其他修改操作异常处理总结概述Alter Table是非常常见的一种DDL操作,在Hive中,使用Alter Table可以修改表名,修改表属性,添加字段,修改字段数据类型等等。需要注意的是,ALTER TABLE修改的只是MySQL中的相关元数据,不会对表数据产生影响,用户需要手动确保实际数据符合元数据的定义,否则查询不会返回预期的结果。但在分区数比较多的情况下,修改表名这类逻辑上非常简单的操作时间开销却很大。因此对Alter Table语句的具体
2021-04-29 23:40:19
2018
2
原创 Hive优化—skew join优化原理详解
目录优化原理适用范围测试验证优化原理JOIN中倾斜键的处理思路最早是在HIVE-964中提出的,整体思路是使用独立的作业和mapjoin来处理倾斜的键。用以处理倾斜键的MR作业数是表的数量减一(we can stream the last table, so big keys in the last table will not be a problem)在执行JOIN的过程中,会将一个表中的大key(也就是倾斜的那部分数据,判断是否倾斜由配置项hive.skewjoin.key指定,默认是1000
2020-12-17 23:50:58
6843
1
原创 YARN 作业 Staging目录的用途及配置
目录staging目录的用途MapReduce作业staging的配置示例Spark 作业Staging目录的配置示例staging目录的用途关于staging目录可能很多人都不太会关注,毕竟日常运行作业也用不到这些配置。不过了解它对于我们理解作业的执行流程也是有所帮助的,比如我们都会使用hadoop jar 或 spark-submit等命令来提交一个MR或Spark作业,然后我们就会看到在集群的某些计算节点上启动executor(MapRedece对应的是mapper和reducer)来执行任务。这
2020-12-17 23:10:44
4898
原创 HiveQL DQL9—窗口函数
目录概述窗口聚合函数窗口排序函数窗口分析函数窗口表达式Row Typerange type参考概述Hive从0.11.0开始支持窗口函数,这是一组特殊的函数,可以扫描多个输入行来计算每个输出值。窗口函数通常和OVER, PARTITION BY, ORDER BY 以及 windowing specification一起使用。不同于和GROUP BY一起使用的常规聚合函数(每组只有一个结果值)...
2020-02-06 22:28:52
318
原创 HiveQL DQL8—数据采样
目录概述随机采样桶表采样示例:based on whole row示例:based on bucket column块采样示例:按行采样示例:按数据大小的百分比采样示例:按数据大小采样参考概述当数据量特别大时,我们可能需要获取一些数据的子集来加速数据分析。这就是采样,一种用于识别和分析数据子集以发现整个数据集中的模式和趋势的技术。在HQL中,采样数据有三种方式:随机采样、桶表采样和块采样。随...
2020-02-04 22:35:36
299
原创 HiveQL DQL7—高级聚合
目录Grouping sets示例:使用一个字段对元素的GROUPING SETS示例:使用2个元素的GROUPING SETS示例:使用2个元素的GROUPING SETS,一个字段对,一个是单独字段示例:使用4个元素的GROUPING SETSRollup 和 Cube聚合条件过滤 HAVING参考通过使用 GROUPING SETS, CUBE, 和 ROLLUP,Hive提供了高级聚合功...
2020-02-04 22:27:58
252
原创 HiveQL DQL6—基本聚合(GROUP BY)
目录概述使用示例示例:不使用GROUP BY的聚合示例:使用GROUP BY的聚合示例:同一个SELECT中使用多个聚合函数示例:与CASE WHEN THEN ELSE END,coalesce(...), if(...)一起使用聚合函数示例:与coalesce(...), if(...)一起使用聚合函数示例:GROUP BY子句中使用表达式示例:不允许聚合函数的嵌套示例:NULL值的处理示...
2020-01-26 23:18:19
1580
原创 HiveQL DQL3—JOIN
目录概述隐式join表示法(Implicit join notation)非限定列引用(Unqualified column reference)ON子句支持复杂表达式(Complex expressions in ON clause)INNER JOINOUTER JOIN特殊的 joinMapJoinBucket MapJoinLEFT SEMI JOIN参考概述JOIN用于将两个或多个表...
2020-01-24 17:27:11
1665
原创 HiveQL DQL4—UNION
目录概述示例UNION ALLUNIONOrder with UNION使用 join 实现 intercept使用 left join 实现 minus参考概述 当我们想将同一schema的数据组合在一起时,会经常使用set 操作。关系数据库中的常规set操作是INTERSECT、MINUS和UNION/UNION ALL。HQL只支持UNION 和 UNION ALL,二者的区别是UNI...
2020-01-23 23:01:46
620
原创 HiveQL DQL1—SELECT
目录语法介绍ALL 和 DISTINCT子句HAVING子句使用 IF 或 CASE WHEN 函数基于分区的查询基于正则表达式的列描述条件查询LIMIT 子句WHERE子句IN/NOT IN语句EXISTS/NOT EXISTS语句参考语法介绍[WITH CommonTableExpression (, CommonTableExpression)*] (Note: Only avai...
2020-01-23 22:30:13
281
原创 HiveQL函数10—表生成函数(UDTF)
目录1.explode(ARRAY<T> a)2.explode(MAP<Tkey,Tvalue> m)3.posexplode(ARRAY<T> a)4.inline(ARRAY<STRUCT<f1:T1,...,fn:Tn>> a)5.stack(int r,T1 V1,...,Tn/r Vn)6.json_tuple(string ...
2020-01-21 21:47:06
379
原创 HiveQL函数9—聚合函数(UDAF)
目录1.count(*), count(expr), count(DISTINCT expr[, expr...])2.sum(col), sum(DISTINCT col)3.avg(col), avg(DISTINCT col)4.min(col)5.max(col)6.variance(col), var_pop(col)7.var_samp(col)8.stddev_pop(col)9.s...
2020-01-21 21:43:12
1373
原创 HiveQL函数8—其他杂项函数
目录1.java_method(class, method[, arg1[, arg2..]]) , reflect(class, method[, arg1[, arg2..]])2.hash(a1[, a2...])3.current_user()4.logged_in_user()5.current_database()6.md5(string/binary)7.sha1(string/bi...
2020-01-21 21:30:48
1276
原创 HiveQL函数7—数据脱敏函数(Data Masking)
目录1.mask(string str[, string upper[, string lower[, string number]]])2.mask_first_n(string str[, int n])3.mask_last_n(string str[, int n])4.mask_show_first_n(string str[, int n])5.mask_show_last_n(str...
2020-01-21 21:18:10
4801
原创 HiveQL函数6—字符串函数
目录1. ascii(string str)2.base64(binary bin)3.character_length(string str)4.chr(bigint|double A)5.concat(string|binary A, string|binary B...)6.context_ngrams(array<array<string>>, array<s...
2020-01-21 21:07:54
1093
原创 HiveQL函数5—条件函数
目录1.if(boolean testCondition, T valueTrue, T valueFalseOrNull)2.isnull( a )3.isnotnull ( a )4.nvl(T value, T default_value)5.COALESCE(T v1, T v2, ...)6.CASE a WHEN b THEN c [WHEN d THEN e]* [ELSE f] E...
2020-01-21 20:50:15
419
原创 HiveQL函数4—日期函数
目录1.from_unixtime(bigint unixtime[, string format])2.unix_timestamp()3.unix_timestamp(string date)4.unix_timestamp(string date, string pattern)5.to_date(string timestamp)6.year(string date)7.quarter(d...
2020-01-21 20:19:45
772
原创 HiveQL函数3—集合、类型转换函数
目录集合函数示例1示例2类型转换函数1. binary(string|binary)2. cast(expr as \)参考集合函数HiveQL支持的集合函数如下函数名返回类型描述size(Map<K.V>)int计算map的元素个数size(Array)int计算数组的元素个数map_keys(Map<K.V>)array...
2020-01-21 19:52:52
524
原创 HiveQL函数2—数学函数
目录1.round(DOUBLE a)2.round(DOUBLE a, INT d)3.bround(DOUBLE a)4.bround(DOUBLE a, INT d)5.floor(DOUBLE a)6.ceil(DOUBLE a), ceiling(DOUBLE a)7. rand(), rand(INT seed)8.exp(DOUBLE a), exp(DECIMAL a)9.ln(D...
2020-01-21 19:39:37
876
原创 HiveQL函数1—函数简介
目录简介参考简介HiveQL 内置了很多的函数。详细的列表可以参考 https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF ,本文介绍HiveQL的函数分类及如何查看函数的详细信息。Hive中的函数分为如下几类:数学函数集合函数类型转换函数日期函数条件函数字符函数数据掩码函数Misc 函数聚合...
2020-01-20 23:19:09
301
原创 HiveQL DQL10—虚拟列
目录示例1示例2示例3参考Hive在0.8.0提供了虚拟列的功能,虚拟列是一种特殊的函数,目前有2个可用的虚拟列:INPUT__FILE__NAME:显示mapper task的输入文件名BLOCK__OFFSET__INSIDE__FILE:显示当前全局文件的位置,或者当前block在文件的偏移位置(如果文件是压缩的)。示例1> SELECT INPUT__FILE__NAM...
2020-01-20 23:10:46
195
原创 HiveQL DQL5—数据排序
目录1. ORDER BY [ASC|DESC]示例:基本用法示例:指定NULL值的排序方向示例:指定字段位置排序示例:使用表达式排序2. SORT BY [ASC|DESC]示例3. DISTRIBUTE BY示例:基本用法示例:与SORT BY一起使用4. CLUSTER BY示例参考1. ORDER BY [ASC|DESC]colOrder: ( ASC | DESC )colNul...
2020-01-20 23:02:53
407
原创 HiveQL DQL2—CTE和子查询
目录概述示例SELECT语句中使用CTEViews,CTAS和INSERT语句中使用CTE参考概述 公共表表达式(CTE)是从WITH子句指定的简单查询中派生的临时结果集,它紧跟在SELECT或INSERT关键字之前,CTE仅在单个语句的执行范围内定义。Hive中一个或多个CTE可与SELECT, INSERT, CREATE TABLE AS SELECT, 或 CREATE VIEW A...
2020-01-20 20:34:54
974
原创 HiveQL DML—数据加载和插入
目录使用LOAD DATA加载数据语法示例将查询结果插入到表中语法示例将查询数据写入到文件系统中语法示例使用 INSERT…VALUES 语句插入数据到表中语法示例使用LOAD DATA加载数据Hive使用LOAD DATA加载数据的时候,不会进行任何的数据转换操作。完全就是简单的将数据文件复制/移动到表对应的路径下语法LOAD DATA...
2019-11-13 23:54:44
636
原创 HiveQL DML—IMPORT,EXPORT
目录EXPORTIMPORT 当需要进行数据迁移的时候,可能需要在两个不同集群之间移动数据。Hive支持使用EXPORT和IMPORT语句在两个不同环境的HDFS集群中移动数据。EXPORT EXPORT语句可以从一个表或者分区中导出数据及其元数据,导出的元数据文件会存储在名为_metadata的文件中,而数据会存储在名为data的子目录中。语法如下:EXPORT TABLE...
2019-11-13 21:49:56
275
原创 YARN NodeManager Restart 特性
目录概述配置概述 NodeManager (NM) restart 是一个使 NodeManager 能够在不丢失节点上运行的活动 container 的情况下重新启动的功能。在高级别上,NM 在处理 container-management 请求时将任何必要的状态存储到本地 state-store 中。当NM重新启动时,它首先为各个子系统加载状态,然后使这些子系统从之前的状态中恢复...
2019-10-19 15:33:51
1826
原创 YARN ResourceManager Restart 特性
目录概述配置配置步骤配置示例补充说明概述 ResourceManager 是管理资源和调度运行在YARN上的应用程序的中心机构。因此,它可能会是YARN集群中的单点故障。yarn提供了一种ResourceManager Restart功能,这是一个ResourceManager在重启过程中保持正常工作的增强功能,同时最终用户感知不到 ResourceManager 的停机...
2019-10-19 15:19:23
887
原创 Yarn 资源调度中的规整化因子介绍
为了易于管理和调度资源,Hadoop YARN内置了资源规整化算法,它规定了最小可申请资源量、最大可申请资源量和资源规整化因子,如果应用程序申请的资源量小于最小可申请资源量,则YARN会将其大小改为最小可申请量,也就是说,应用程序获得资源不会小于自己申请的资源,但也不一定相等;如果应用程序申请的资源量大于最大可申请资源量,则会抛出异常,无法申请成功;规整化因子是用来规整化应用程序资源的,应用程...
2019-10-19 14:58:50
786
原创 HiveQL DDL—SHOW的使用总结
目录Show DatabasesShow Tables/Views/Materialized Views/Partitions/IndexesShow TablesShow ViewsShow Materialized ViewsShow PartitionsShow Table/Partition ExtendedShow Table PropertiesShow Crea...
2019-10-06 09:48:15
1816
原创 HiveQL DDL—物化视图
目录概述创建物化视图查看物化视图使用SHOW查看使用DESCRIBE查看修改物化视图删除物化视图概述 物化视图是Apache Hive 3.0.0新加入的特性。使用物化视图加速查询速度是传统数据库常用的技术之一。Apache Hive3.0.0中引入的初始实现侧重于引入物化视图和基于这些物化视图的自动查询重写。物化视图可以存储在Hive本地或者其他系统中,如Druid...
2019-10-05 15:53:41
2155
原创 HiveQL DDL—索引
目录概述创建索引查看索引修改索引删除索引概述 Hive的索引功能是在0.7版本引入的,从3.0开始该特性被移除(参考HIVE-18448.)。不过3.0引入了物化视图这一类似索引的技术。Hive使用索引是为了提高查询表中某些列的速度。如果没有索引,使用诸如’WHERE tab1.col1 = 10’这样的查询将会加载并处理整个表或分区中的记录。此时如果 col1 存在索引,就只...
2019-10-05 15:40:10
180
原创 HiveQL DDL—视图
目录概述创建视图查看视图修改视图修改视图的属性重定义视图删除视图概述 视图是一个纯粹的逻辑数据结构,通过隐藏复杂度(如joins, subqueries, filters)来简化查询。之所以说视图是一种逻辑结果,是因为视图只有元数据信息,不会关联HDFS中的任何存储,也就是不存储任何实际数据。视图一旦被创建,它的schema信息就会被冻结,如果视图底层关联的表的结构...
2019-10-05 15:17:44
468
原创 HiveQL DDL—分桶
目录概述示例概述 除了分区外,分桶是另一种提高查询性能的技术。不同于分区,每个桶对应一个HDFS中的文件分片。Hive会按照分桶字段将数据hash到指定数量的桶中,分桶字段值相同的记录会被分配到同一个桶中。分桶字段使用关键字 CLUSTERED BY 指定。相比于分区,分桶字段是真实表中的字段,而分区字段只是指的是目录。通过使用分桶技术,Hive可以轻松高效的执行抽样、bucket-...
2019-10-05 15:01:22
210
原创 HiveQL DDL—分区
目录概述创建分区表查看分区使用SHOW查看分区查看表的所有分区查看部分分区查看分区的扩展信息使用DESCRIBE查看分区修改分区添加字段添加分区修改分区名交换分区修改分区字段的数据类型修改分区的文件格式修改分区的存储位置合并分区中的小文件清理分区DROPTRUNCATE修复分区概述 默认情况下,一个简单的HQL查询扫描整个...
2019-10-05 14:47:30
487
原创 HiveQL DDL—表
目录创建表使用CTAS建表使用 LIKE 子句建表查看表使用SHOW查看表查看数据库中的表查看表的详细信息查看表的字段信息查看建表语句查看表属性使用DESCRIBE查看表信息清理表DROP TABLETRUNCATE TABLE修改表修改表名修改表属性修改表的SerDe属性修改表的文件格式修改表的存储位置合并表中的小文件修改字...
2019-10-05 08:48:04
700
原创 HiveQL DDL—数据库
目录创建数据库查看数据库使用SHOW查看数据库使用DESCRIBE查看数据库修改数据库使用数据库删除数据库创建数据库CREATE (DATABASE|SCHEMA) [IF NOT EXISTS] database_name [COMMENT database_comment] [LOCATION hdfs_path] [WITH DBPROPERTIES ...
2019-10-04 09:42:15
194
原创 Capacity Scheduler的队列属性介绍
目录概述资源分配使用绝对值配置资源应用程序数目限制队列权限管理基于用户或组的队列映射应用程序的生存期(lifetime)一个完整的配置示例概述 本文基于 Apache hadoop 3.1.1 版本对Capacity Scheduler队列属性进行说明介绍。队列的部分属性对应于Yarn web中展示的队列信息。下表是Yarn web中的队列信息示例,在后面的队列属性介绍中...
2019-09-21 17:09:58
6123
原创 HDFS DataNode扫描机制及相关参数
目录HDFS中的BlockBlock Scanner & Volume ScannerDirectory ScannersDisk Checker配置整理 众所周知,HDFS中数据都是保存在DataNode中,通过复制相同的数据到多个DN中,HDFS可以容忍DN的失败。但如果某些DN的磁盘出现故障,会怎么样呢?本文解释了DN上的一些后台任务是如何工作的,以帮助HDFS跨多...
2019-09-20 23:40:33
2907
1
原创 Yarn&TimeLine&JHS Web UI中显示的最大任务数配置
Yarn RM Web UI中保存的最大的运行完成(completed)的任务数yarn.resourcemanager.max-completed-applicationshadoop2中默认值为10000,hadoop3中默认值是1000TimeLine Server Web UI中保留的最大任务数yarn.timeline-service.generic-applicati...
2019-09-15 10:59:45
1486
原创 Capacity Scheduler 中资源计算器(Resource Calculator)的使用
概述 yarn.scheduler.capacity.resource-calculator:该配置指定调度器使用的资源计算器,资源计算器用于在调度器中比较资源。默认值是 org.apache.hadoop.yarn.util.resource.DefaultResourseCalculator,只使用内存进行比较,而DominantResourceCalculator 用 Dominant-...
2019-09-13 23:17:48
2786
TCP-IP详解卷1
2012-03-12
关于hbase HMaster启动后自动关闭的问题
2015-10-26
TA创建的收藏夹 TA关注的收藏夹
TA关注的人