![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Hive
DataGPT
透过技术圈百态,体会世间冷暖,树立正确的技术观、人生观、价值观和世界观
展开
-
Hive 数据倾斜总结
在做Shuffle阶段的优化过程中,遇到了数据倾斜的问题,造成了对一些情况下优化效果不明显。主要是因为在Job完成后的所得到的Counters是整个Job的总和,优化是基于这些Counters得出的平均值,而由于数据倾斜的原因造成map处理数据量的差异过大,使得这些平均值能代表的价值降低。Hive的执行是分阶段的,map处理数据量的差异取决于上一个stage的reduce输出,所以如何将数据均匀的转载 2015-06-22 10:37:18 · 725 阅读 · 0 评论 -
Hive ORC和Parquet
相比传统数据库的行式存储引擎,列式存储引擎具有更高的压缩比,更少的IO操作,尤其是在数据列很多,但每次操作仅针对若干列进行查询和计算的情景,列式存储引擎的性价比更高。目前在开源实现中,最有名的列式存储引擎莫过于Parquet和ORC,并且他们都是Apache的顶级项目,在数据存储引擎方面发挥着重要的作用。本文将重点讲解ORC文件存储格式,Parquet暂不深入说明,后续抽时间整理。原创 2016-05-21 22:19:35 · 22949 阅读 · 0 评论 -
新一代Hive客户端工具:Beeline
Hive客户端工具后续将使用Beeline 替代HiveCLI ,并且后续版本也会废弃掉HiveCLI 客户端工具。 Beeline是Hive新的命令行客户端工具。Beeline是从 Hive 0.11版本引入的。 HiveServer2 支持一个新的命令行Shell,称为Beeline,它是基于SQLLine CLI的JDBC客户端。Beeline支持嵌入模式(embedded mode)和远程原创 2016-08-17 10:24:11 · 25780 阅读 · 2 评论 -
Hive入门培训
Hive数据类型基础数据类型:TINYINT,SMALLINT,INT,BIGINT,BOOLEAN,FLOAT,DOUBLE,STRING,BINARY,TIMESTAMP,DECIMAL,CHAR,VARCHAR,DATE。复杂数据类型:包括ARRAY(数组),MAP(字典),STRUCT(结构体),UNION(联合体),这些复杂类型是由基础类型组成的。 ARRAY:ARRAY类型是由一系列相原创 2016-08-05 15:22:18 · 2317 阅读 · 0 评论 -
Hive分析窗口函数之LAG,LEAD,FIRST_VALUE和LAST_VALUE
环境信息:Hive版本为apache-hive-0.14.0-binHadoop版本为hadoop-2.6.0Tez版本为tez-0.7.0创建表:create tablewindows_ss( polno string, eff_date string, userno string)ROW FORMATDELIMITEDF原创 2016-04-04 18:02:37 · 13541 阅读 · 2 评论 -
Hive分析窗口函数之GROUPING SETS,CUBE和ROLLUP
这几个分析函数通常用于OLAP中,不能累加,而且需要根据不同维度上钻和下钻的指标统计。环境信息:Hive版本为apache-hive-0.14.0-binHadoop版本为hadoop-2.6.0Tez版本为tez-0.7.0 数据:2016-03,2016-03-10,user12016-03,2016-03-10,user52016-03,2016-03-1原创 2016-04-04 18:06:46 · 5421 阅读 · 0 评论 -
Hive分析窗口函数之CUME_DIST和PERCENT_RANK
两个序列分析函数不是很常用,这里也介绍一下。环境信息:Hive版本为apache-hive-0.14.0-binHadoop版本为hadoop-2.6.0Tez版本为tez-0.7.01. CUME_DIST 小于等于当前值的行数/分组内总行数创建表:create table windows_dept( deptno string,原创 2016-04-04 18:00:19 · 10956 阅读 · 0 评论 -
Hive分析窗口函数之NTILE,ROW_NUMBER,RANK和DENSE_RANK
继续介绍几个序列函数:NTILE,ROW_NUMBER,RANK和DENSE_RANK环境信息:Hive版本为apache-hive-0.14.0-binHadoop版本为hadoop-2.6.0Tez版本为tez-0.7.0数据:P088888888888,2016-02-10,1P088888888888,2016-02-11,3P088原创 2016-04-04 16:34:10 · 2718 阅读 · 0 评论 -
Hive分析窗口函数之SUM,AVG,MIN和MAX
Hive中提供了很多的分析函数,用于完成负责的统计分析。本文先介绍SUM、AVG、MIN、MAX这四个函数。环境信息:Hive版本为apache-hive-0.14.0-binHadoop版本为hadoop-2.6.0Tez版本为tez-0.7.0构造数据:P088888888888,2016-02-10,1P088888888888,2016-02原创 2016-04-04 16:30:20 · 9470 阅读 · 0 评论 -
使用Hive自定义函数生成UUID随机字符串函数
package com.zy.hive.udf;import java.util.UUID;import org.apache.hadoop.hive.ql.exec.Description;import org.apache.hadoop.hive.ql.exec.UDF;import org.apache.hadoop.hive.ql.udf.UDFType;import org.apache原创 2016-08-26 15:56:24 · 9184 阅读 · 0 评论 -
Hive中实现增量更新
保险公司有一个表记录客户的信息,其中包括有客户的id,name和age(为了演示只列出这几个字段)。创建Hive的表:create table customer(id int,age tinyint,name string)partitioned by(dt string)row format delimitedfields terminated by '|原创 2015-06-22 22:18:06 · 9077 阅读 · 3 评论 -
Hive索引
1、 Hive索引概述Hive的索引目的是提高Hive表指定列的查询速度。没有索引时,类似'WHERE tab1.col1 = 10' 的查询,Hive会加载整张表或分区,然后处理所有的rows,但是如果在字段col1上面存在索引时,那么只会加载和处理文件的一部分。与其他传统数据库一样,增加索引在提升查询速度时,会消耗额外资源去创建索引和需要更多的磁盘空间存储索引。H原创 2015-06-27 17:23:14 · 2539 阅读 · 4 评论 -
Hive组件高可用
Hive Metastore高可用此文档是为了系统管理员准备的,他们需要配置Hive Metastore高可用服务。 重要提示:支持HiveMetastore本身的关系型数据库也应该使用数据库系统所定义的最佳实践提供高可用性。 用例和故障转移场景本节提供关于Hive Metastore高可用(HA)的用例和故障转移场景的信息。 用例Metastore HA解决方案被设计用来处理metastore服原创 2018-01-03 15:39:09 · 4792 阅读 · 1 评论 -
Hive性能优化
架构层面优化:l 分表l 合理利用中间结果集,避免查过就丢的资源浪费,减低Hadoop的IO负载l 常用复杂或低效函数尽量不用或拆分成其他实现方式,如count(distinct)l 合理设计表分区,静态分区和动态分区l 优化时一定要把握整体,单个作业最优不如整个作业最优。l 文件存储格式和压缩方式l Hadoop本身的优化l 有些逻辑,使用系统函数原创 2016-05-24 10:23:10 · 5617 阅读 · 1 评论 -
使用Hive实现时间拉链功能
背景:在数据仓库的数据模型设计过程中,经常会遇到如下的业务需求:1. 表的数据量很大,大几千万或上亿;2. 表中的部分字段会被update更新操作,如用户的上级领导,产品的描述信息,订单的状态等等;3. 需要查看某一个时间点或者时间段的历史快照信息,比如,查看某一个订单在历史某一个时间点的状态;4. 变化的比例和频率不是很大,比如,总共有8000万的用户,每天新增和发生变化原创 2016-02-13 17:49:39 · 7780 阅读 · 2 评论 -
java.lang.NoSuchMethodError: org.apache.hadoop.hive.ql.ppd.ExprWalkerInfo.getConvertedNode
环境:Hadoop 2.6.0Hive 1.1.1JDK 1.7.0_60操作系统:Red Hat Enterprise Linux Server release 6.0 (Santiago)问题描述:在Hive中执行创建表,导入数据,不带where语句的查询都没有问题。但是带where语句时报错, 如下:hive (timezipper)> SELECT or原创 2016-02-12 10:00:57 · 2684 阅读 · 0 评论 -
Hive Join
https://cwiki.apache.org/confluence/display/Hive/LanguageManual+JoinsLanguageManualJoinsJoin SyntaxHive支持下面的表join语法结构:join_table: table_reference JOIN table_factor[join_condition] | ta原创 2015-06-21 12:36:26 · 1896 阅读 · 0 评论 -
Hadoop执行MR Job的基本过程
Hive是基于Hadoop平台的,它提供了类似SQL一样的查询语言HQL。有了Hive,如果使用过SQL语言,并且不理解Hadoop MapReduce运行原理,也就无法通过编程来实现MR,但是你仍然可以很容易地编写出特定查询分析的HQL语句,通过使用类似SQL的语法,将HQL查询语句提交Hive系统执行查询分析,最终Hive会帮你转换成底层Hadoop能够理解的MR Job。对于最基本的HQ原创 2015-06-21 15:15:43 · 2978 阅读 · 0 评论 -
Improvements to the Hive Optimizer
LanguageManual JoinOptimizationImprovementsto the Hive OptimizerHive可以自动优化,在Hive 0.11里面改进了一些优化用例1、 JOIN的一边适合放在内存,有新的优化方案a) 把表按照hash表的形式读进内存b) 只扫描大表c) fact表只使用少量内存2、 星型原创 2015-06-21 23:02:50 · 1317 阅读 · 0 评论 -
hive partition
partition是hive提供的一种机制:用户通过指定一个或多个partition key,决定数据存放方式,进而优化数据的查询一个表可以指定多个partition key,每个partition在hive中以文件夹的形式存在。实例(static partition):编辑文件:/home/work/data/test3.txt; /home/work/data/test4.tx转载 2015-06-23 22:25:09 · 719 阅读 · 0 评论 -
Hive中将查询结果导出到指定分隔符的文件中
在Hive0.11.0版本中新引进了一个新的特性,当用户将Hive查询结果输出到文件中时,用户可以指定列的分割符,而在之前的版本是不能指定列之间的分隔符。在Hive0.11.0之前版本如下使用,无法指定分隔符,默认为\x01:hive (hive)> insertoverwrite local directory '/home/hadoop/export_hive' select * fr原创 2015-06-27 18:47:25 · 9586 阅读 · 0 评论 -
Hive:ORC File Format存储格式详解
在Hive中,我们应该都听过RCFile这种格式吧,关于这种文件格式的结构什么的我就不介绍了,感兴趣的可以去网上找找。今天这篇文章要说的主题是ORC File。一、定义 ORC File,它的全名是Optimized Row Columnar (ORC) file,其实就是对RCFile做了一些优化。据官方文档介绍,这种文件格式可以提供一种高效的方法来存储Hive数据。它的设计目转载 2015-06-28 23:07:24 · 2928 阅读 · 0 评论 -
基于Hive 的文件格式:RCFile 简介及其应用
目录[-]1、hadoop 文件格式简介(1)SequenceFile(2)RCFile(3)Avro(4)文本格式(5)外部格式2、为什么需要 RCFile3、RCFile 简介4、超越RCFile,下一步采用什么方法5、如何生成 RCFile 文件(1)hive 中直接通过textfile表进行insert转换(2)通过 mapreduc转载 2015-06-28 23:02:50 · 1513 阅读 · 0 评论 -
使用Hive的正则解析器RegexSerDe分析nginx日志
1、环境:hadoop-2.6.0 + apache-hive-1.2.0-bin2、使用Hive分析nginx日志,网站的访问日志部分内容为:cat /home/hadoop/hivetestdata/nginx.txt192.168.1.128 - - [09/Jan/2015:12:38:08 +0800] "GET /avatar/helloworld.png原创 2015-06-09 18:01:34 · 2072 阅读 · 0 评论 -
Hive中行列转换
1、演示多列转为单行数据文件及内容: student.txtxiaoming|english|92.0xiaoming|chinese|98.0xiaoming|math|89.5huahua|chinese|80.0huahua|math|89.5创建表studnet:create table student(name string,subject strin原创 2015-07-08 23:30:04 · 10116 阅读 · 0 评论 -
java.lang.IncompatibleClassChangeError: Found class jline.Terminal, but interface was expected
环境:Linux: Red Hat Enterprise Linux Server release 6.0 (Santiago)Java: java version "1.7.0_60" Java(TM) SE Runtime Environment (build 1.7.0_60-b19) Java HotSpot(TM) 64-Bit Ser原创 2015-10-22 22:51:58 · 6019 阅读 · 0 评论 -
Hive数据去重
Hive数据去重insert overwrite table ta_customers select t.ta_id,t.ta_date from ( select ta_id, ta_date , row_number() over(distribute by ta_id sort by原创 2015-10-25 09:36:13 · 3580 阅读 · 0 评论 -
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop/hive/ql/CommandNeedRetr
问题如下:[hadoop@gpmaster hadoop]$ hiveException in thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop/hive/ql/CommandNeedRetryExceptionat java.lang.Class.forName0(Native Method)at ja原创 2016-01-11 20:48:53 · 4222 阅读 · 0 评论