Hive
文章平均质量分 93
看得出的就是
种一棵树最好的时间是十年前,其次是现在!
不要给自己设限!
做自己!
展开
-
Hive源码分析——Alter Table操作执行流程分析
目录概述过程分析参数介绍初始化类型兼容性检查修改表名操作其他修改操作异常处理总结概述Alter Table是非常常见的一种DDL操作,在Hive中,使用Alter Table可以修改表名,修改表属性,添加字段,修改字段数据类型等等。需要注意的是,ALTER TABLE修改的只是MySQL中的相关元数据,不会对表数据产生影响,用户需要手动确保实际数据符合元数据的定义,否则查询不会返回预期的结果。但在分区数比较多的情况下,修改表名这类逻辑上非常简单的操作时间开销却很大。因此对Alter Table语句的具体原创 2021-04-29 23:40:19 · 1897 阅读 · 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 · 6701 阅读 · 1 评论 -
HiveQL DQL9—窗口函数
目录概述窗口聚合函数窗口排序函数窗口分析函数窗口表达式Row Typerange type参考概述Hive从0.11.0开始支持窗口函数,这是一组特殊的函数,可以扫描多个输入行来计算每个输出值。窗口函数通常和OVER, PARTITION BY, ORDER BY 以及 windowing specification一起使用。不同于和GROUP BY一起使用的常规聚合函数(每组只有一个结果值)...原创 2020-02-06 22:28:52 · 314 阅读 · 0 评论 -
HiveQL DQL8—数据采样
目录概述随机采样桶表采样示例:based on whole row示例:based on bucket column块采样示例:按行采样示例:按数据大小的百分比采样示例:按数据大小采样参考概述当数据量特别大时,我们可能需要获取一些数据的子集来加速数据分析。这就是采样,一种用于识别和分析数据子集以发现整个数据集中的模式和趋势的技术。在HQL中,采样数据有三种方式:随机采样、桶表采样和块采样。随...原创 2020-02-04 22:35:36 · 289 阅读 · 0 评论 -
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 · 241 阅读 · 0 评论 -
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 · 1422 阅读 · 0 评论 -
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 · 1655 阅读 · 0 评论 -
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 · 545 阅读 · 0 评论 -
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 · 272 阅读 · 0 评论 -
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 · 369 阅读 · 0 评论 -
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 · 1249 阅读 · 0 评论 -
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 · 1259 阅读 · 0 评论 -
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 · 4665 阅读 · 0 评论 -
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 · 1072 阅读 · 0 评论 -
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 · 312 阅读 · 0 评论 -
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 · 544 阅读 · 0 评论 -
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 · 480 阅读 · 0 评论 -
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 · 492 阅读 · 0 评论 -
HiveQL函数1—函数简介
目录简介参考简介HiveQL 内置了很多的函数。详细的列表可以参考 https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF ,本文介绍HiveQL的函数分类及如何查看函数的详细信息。Hive中的函数分为如下几类:数学函数集合函数类型转换函数日期函数条件函数字符函数数据掩码函数Misc 函数聚合...原创 2020-01-20 23:19:09 · 287 阅读 · 0 评论 -
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 · 191 阅读 · 0 评论 -
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 · 400 阅读 · 0 评论 -
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 · 881 阅读 · 0 评论 -
HiveQL DML—数据加载和插入
目录使用LOAD DATA加载数据语法示例将查询结果插入到表中语法示例将查询数据写入到文件系统中语法示例使用 INSERT…VALUES 语句插入数据到表中语法示例使用LOAD DATA加载数据Hive使用LOAD DATA加载数据的时候,不会进行任何的数据转换操作。完全就是简单的将数据文件复制/移动到表对应的路径下语法LOAD DATA...原创 2019-11-13 23:54:44 · 510 阅读 · 0 评论 -
HiveQL DML—IMPORT,EXPORT
目录EXPORTIMPORT 当需要进行数据迁移的时候,可能需要在两个不同集群之间移动数据。Hive支持使用EXPORT和IMPORT语句在两个不同环境的HDFS集群中移动数据。EXPORT EXPORT语句可以从一个表或者分区中导出数据及其元数据,导出的元数据文件会存储在名为_metadata的文件中,而数据会存储在名为data的子目录中。语法如下:EXPORT TABLE...原创 2019-11-13 21:49:56 · 265 阅读 · 0 评论 -
Hive的授权机制——基于存储的授权模型
原文:https://cwiki.apache.org/confluence/display/Hive/Storage+Based+Authorization+in+the+Metastore+ServerStorage Based Authorization in the Metastore ServerHive Metastore服务中的基于存储的授权模型是在hive 0....原创 2019-03-02 19:25:48 · 1520 阅读 · 0 评论 -
Hive 配置——认证和授权
原文:https://cwiki.apache.org/confluence/display/Hive/Configuration+Properties#ConfigurationProperties-AuthenticationandAuthorization限制的/隐藏的/内部列表和白名单(Restricted/Hidden/Internal List and Whitelist)* hi...原创 2019-03-03 11:32:58 · 9373 阅读 · 0 评论 -
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 · 188 阅读 · 0 评论 -
HiveQL DDL—表
目录创建表使用CTAS建表使用 LIKE 子句建表查看表使用SHOW查看表查看数据库中的表查看表的详细信息查看表的字段信息查看建表语句查看表属性使用DESCRIBE查看表信息清理表DROP TABLETRUNCATE TABLE修改表修改表名修改表属性修改表的SerDe属性修改表的文件格式修改表的存储位置合并表中的小文件修改字...原创 2019-10-05 08:48:04 · 524 阅读 · 0 评论 -
HiveQL DDL—分区
目录概述创建分区表查看分区使用SHOW查看分区查看表的所有分区查看部分分区查看分区的扩展信息使用DESCRIBE查看分区修改分区添加字段添加分区修改分区名交换分区修改分区字段的数据类型修改分区的文件格式修改分区的存储位置合并分区中的小文件清理分区DROPTRUNCATE修复分区概述 默认情况下,一个简单的HQL查询扫描整个...原创 2019-10-05 14:47:30 · 359 阅读 · 0 评论 -
HiveQL DDL—分桶
目录概述示例概述 除了分区外,分桶是另一种提高查询性能的技术。不同于分区,每个桶对应一个HDFS中的文件分片。Hive会按照分桶字段将数据hash到指定数量的桶中,分桶字段值相同的记录会被分配到同一个桶中。分桶字段使用关键字 CLUSTERED BY 指定。相比于分区,分桶字段是真实表中的字段,而分区字段只是指的是目录。通过使用分桶技术,Hive可以轻松高效的执行抽样、bucket-...原创 2019-10-05 15:01:22 · 204 阅读 · 0 评论 -
HiveQL DDL—视图
目录概述创建视图查看视图修改视图修改视图的属性重定义视图删除视图概述 视图是一个纯粹的逻辑数据结构,通过隐藏复杂度(如joins, subqueries, filters)来简化查询。之所以说视图是一种逻辑结果,是因为视图只有元数据信息,不会关联HDFS中的任何存储,也就是不存储任何实际数据。视图一旦被创建,它的schema信息就会被冻结,如果视图底层关联的表的结构...原创 2019-10-05 15:17:44 · 414 阅读 · 0 评论 -
HiveQL DDL—索引
目录概述创建索引查看索引修改索引删除索引概述 Hive的索引功能是在0.7版本引入的,从3.0开始该特性被移除(参考HIVE-18448.)。不过3.0引入了物化视图这一类似索引的技术。Hive使用索引是为了提高查询表中某些列的速度。如果没有索引,使用诸如’WHERE tab1.col1 = 10’这样的查询将会加载并处理整个表或分区中的记录。此时如果 col1 存在索引,就只...原创 2019-10-05 15:40:10 · 171 阅读 · 0 评论 -
HiveQL DDL—物化视图
目录概述创建物化视图查看物化视图使用SHOW查看使用DESCRIBE查看修改物化视图删除物化视图概述 物化视图是Apache Hive 3.0.0新加入的特性。使用物化视图加速查询速度是传统数据库常用的技术之一。Apache Hive3.0.0中引入的初始实现侧重于引入物化视图和基于这些物化视图的自动查询重写。物化视图可以存储在Hive本地或者其他系统中,如Druid...原创 2019-10-05 15:53:41 · 2041 阅读 · 0 评论 -
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 · 1678 阅读 · 0 评论 -
Hive的授权机制——总体介绍
原文:https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Authorization概述该文档介绍hive的权限控制机制,也就是某个用户是否有权限执行某个特定的操作。并不是讨论认证机制(验证用户的身份)。使用kerberos可以为类似于hive命令行这样的工具提供一种强认证。对于Hiveserver2,还有一...原创 2019-03-02 18:47:27 · 1429 阅读 · 0 评论