Hive实战
本人从事Hadoop+Hive+HBase+Impala+Greenplum方面的开发和研究,努力成为大数据方面的专家。
DataGPT
透过技术圈百态,体会世间冷暖,树立正确的技术观、人生观、价值观和世界观
展开
-
新一代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 · 25828 阅读 · 2 评论 -
使用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 · 9220 阅读 · 0 评论 -
Hive性能优化
架构层面优化:l 分表l 合理利用中间结果集,避免查过就丢的资源浪费,减低Hadoop的IO负载l 常用复杂或低效函数尽量不用或拆分成其他实现方式,如count(distinct)l 合理设计表分区,静态分区和动态分区l 优化时一定要把握整体,单个作业最优不如整个作业最优。l 文件存储格式和压缩方式l Hadoop本身的优化l 有些逻辑,使用系统函数原创 2016-05-24 10:23:10 · 5653 阅读 · 1 评论 -
Hive ORC和Parquet
相比传统数据库的行式存储引擎,列式存储引擎具有更高的压缩比,更少的IO操作,尤其是在数据列很多,但每次操作仅针对若干列进行查询和计算的情景,列式存储引擎的性价比更高。目前在开源实现中,最有名的列式存储引擎莫过于Parquet和ORC,并且他们都是Apache的顶级项目,在数据存储引擎方面发挥着重要的作用。本文将重点讲解ORC文件存储格式,Parquet暂不深入说明,后续抽时间整理。原创 2016-05-21 22:19:35 · 22967 阅读 · 0 评论 -
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 · 5462 阅读 · 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 · 13563 阅读 · 2 评论 -
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 · 10966 阅读 · 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 · 2727 阅读 · 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 · 9479 阅读 · 0 评论 -
Hive索引
1、 Hive索引概述Hive的索引目的是提高Hive表指定列的查询速度。没有索引时,类似'WHERE tab1.col1 = 10' 的查询,Hive会加载整张表或分区,然后处理所有的rows,但是如果在字段col1上面存在索引时,那么只会加载和处理文件的一部分。与其他传统数据库一样,增加索引在提升查询速度时,会消耗额外资源去创建索引和需要更多的磁盘空间存储索引。H原创 2015-06-27 17:23:14 · 2561 阅读 · 4 评论 -
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 · 9600 阅读 · 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 · 10131 阅读 · 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 · 3586 阅读 · 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 · 4231 阅读 · 0 评论 -
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 · 2692 阅读 · 0 评论 -
使用Hive实现时间拉链功能
背景:在数据仓库的数据模型设计过程中,经常会遇到如下的业务需求:1. 表的数据量很大,大几千万或上亿;2. 表中的部分字段会被update更新操作,如用户的上级领导,产品的描述信息,订单的状态等等;3. 需要查看某一个时间点或者时间段的历史快照信息,比如,查看某一个订单在历史某一个时间点的状态;4. 变化的比例和频率不是很大,比如,总共有8000万的用户,每天新增和发生变化原创 2016-02-13 17:49:39 · 7814 阅读 · 2 评论 -
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 · 6030 阅读 · 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 · 2082 阅读 · 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 · 9090 阅读 · 3 评论