
Hive分享
文章平均质量分 69
iteye_1344
这个作者很懒,什么都没留下…
展开
-
Hive分享教程1-Hive简介
HIVE是一个SQL解释引擎,它将SQL语句转译成M/R JOB,然后在Hadoop执行,来达到快速开发的目的。Hive的表其实就是一个Hadoop的目录/文件(HIVE默认表存放路径一般是工作目录的Hive目录里面),按表名做文件夹分开,如果有分区表,分区值都是子文件夹,可以直接在其他的M/R JOB里面直接应用这部分数据。 Hive的特点有一下几点: ...原创 2012-07-03 11:46:15 · 131 阅读 · 0 评论 -
Hive的JOIN用法
Hive表连接的语法支持如下:join_table: table_reference JOIN table_factor [join_condition] | table_reference {LEFT|RIGHT|FULL} [OUTER] JOIN table_reference join_condition | table_reference LEFT SEMI...原创 2013-04-18 14:06:12 · 197 阅读 · 0 评论 -
HIVE中的排序细谈
order byorder by 会对输入做全局排序,因此只有一个reducer(多个reducer无法保证全局有序)只有一个reducer,会导致当输入规模较大时,需要较长的计算时间。set hive.mapred.mode=nonstrict; (default value / 默认值)set hive.mapred.mode=strict; order by 和数据库...原创 2013-04-18 23:06:33 · 162 阅读 · 0 评论 -
HIVE lateral view
Lateral View语法lateralView: LATERAL VIEW udtf(expression) tableAlias AS columnAlias (',' columnAlias)*fromClause: FROM baseTable (lateralView)*描述lateral view用于和split, explode等UDTF一起使用,它能够将一...原创 2013-04-18 23:15:21 · 697 阅读 · 0 评论 -
HIVE Explain
EXPLAIN语法Hive提供EXPLAIN命令,显示查询的执行计划。语法如下:EXPLAIN [EXTENDED] query EXPLAIN语句使用EXTENDED,提供执行计划关于操作的额外的信息。这是典型的物理信息,如文件名。 Hive查询被转换成序列(这是一个有向无环图)阶段。这些阶段可能是mapper/reducer阶段,或者做metastore或文件系统的...原创 2013-04-20 20:31:09 · 143 阅读 · 0 评论 -
Hive锁与并发模型
Hive 并发模型使用案例并发支持 (http://issues.apache.org/jira/browse/HIVE-1293) 是数据库的必须,而且他们的使用案例很好懂。至少,我们要尽可能支持并发读和写。添加几个发现当前已经锁定的锁,是有用的。这里没有一个直接的需求添加一个API显式获取锁,所以,所有锁都是隐式获取的。 hive定义一下模式的锁(注意不需要意向锁)共享...原创 2013-04-20 21:57:47 · 231 阅读 · 0 评论 -
Hive自定义函数(simple)
Hive可以自定义函数,自定义函数分为两种,一种是simple,simple是通过java反射机制,所以效率上有一定的折扣,对性能有一定的损耗。另一种是generic,generic使用分布式JAVA API,类似于Hadoop的一套API 一、分类 UDF(普通):操作作用于单个数据行,产生一个数据行作为输出。(数学函数,字符串函数) UDAF(用户定义聚集函数):接...原创 2013-04-20 22:25:35 · 386 阅读 · 0 评论 -
Hive自定义函数(generic)
Hive自定义generic(通用)函数,性能比simple性能高,同时能处理simple不能处理的问题,如:simple不能处理Hive的struct结构。 hive generic 函数详细见hive 目录:src\ql\src\java\org\apache\hadoop\hive\ql\udf\generic 一、GenericUDF1.UDF首先将输入数...原创 2013-04-21 16:56:19 · 412 阅读 · 0 评论 -
hive udaf开发入门和运行过程详解
介绍hive的用户自定义聚合函数(UDAF)是一个很好的功能,集成了先进的数据处理。hive有两种UDAF:简单和通用。顾名思义,简单的 UDAF,写的相当简单的,但因为使用Java反射导致性能损失,而且有些特性不能使用,如可变长度参数列表。通用UDAF可以使用所有功能,但是 UDAF就写的比较复杂,不直观。 UDAF是需要在hive的sql语句和group by联合使用,hiv...原创 2013-04-21 18:07:09 · 169 阅读 · 0 评论 -
Hive中UDTF的编写与使用
1. UDTF介绍 UDTF(User-Defined Table-Generating Functions) 用来解决 输入一行输出多行(On-to-many maping) 的需求。 2. 编写自己需要的UDTF 继承org.apache.hadoop.hive.ql.udf.generic.GenericUDTF,实现initialize, process, clo...原创 2013-04-21 22:24:48 · 286 阅读 · 0 评论 -
Hive决定reducer个数的标准
Hadoop MapReduce程序中,reducer个数的设定极大影响执行效率,这使得Hive怎样决定reducer个数成为一个关键问题。遗憾的是Hive的估计机制很弱,不指定reducer个数的情况下,Hive会猜测确定一个reducer个数, 基于以下两个设定: 1. hive.exec.reducers.bytes.per.reducer(默认为1000^3)2. ...原创 2013-04-21 22:42:26 · 241 阅读 · 0 评论 -
hive的hive.exec.parallel参数说明
hive.exec.parallel参数控制在同一个sql中的不同的job是否可以同时运行,默认为false. 下面是对于该参数的测试过程: 测试sql:select r1.afrom ( select t.a from sunwg_10 t join sunwg_10000000 s on t.a=s.b) r1 join (select s...原创 2013-04-21 22:54:22 · 321 阅读 · 0 评论 -
Hive文件存储格式
hive文件存储格式包括以下几类: TEXTFILE SEQUENCEFILE RCFILE 自定义格式 其中TEXTFILE为默认格式,建表时不指定默认为这个格式,导入数据时会直接把数据文件拷贝到hdfs上不进行处理。 SequenceFile,RCFile格式的表不能直接从本地文件导入数据,数据要先导入到textf...原创 2013-04-22 09:53:41 · 87 阅读 · 0 评论 -
Hive文件存储格式的测试比较
整理了一下网上的几种Hive文件存储格式的性能与Hadoop的文件存储格式。 Hive的三种文件格式:TEXTFILE、SEQUENCEFILE、RCFILE中,TEXTFILE和SEQUENCEFILE的存储格式都是基于行存储的,RCFILE是基于行列混合的思想,先按行把数据划分成N个row group,在row group中对每个列分别进行存储。另:Hive能支持自定义格...原创 2013-04-22 19:57:17 · 793 阅读 · 0 评论 -
Hive索引
一、Hive Index具体实现索引是标准的数据库技术,hive 0.7版本之后支持索引。hive索引采用的不是'one size fites all'的索引实现方式,而是提供插入式接口,并且提供一个具体的索引实现作为参考。Hive的Index接口如下:/** * HiveIndexHandler defines a pluggable interface for adding n...原创 2013-04-26 20:55:44 · 138 阅读 · 0 评论 -
HIVE原生和复合类型的数据加载和使用
原生类型原生类型包括TINYINT,SMALLINT,INT,BIGINT,BOOLEAN,FLOAT,DOUBLE,STRING,BINARY (Hive 0.8.0以上才可用),TIMESTAMP (Hive 0.8.0以上才可用),这些数据加载很容易,只要设置好列分隔符,按照列分隔符输出到文件就可以了。假设有这么一张用户登陆表CREATE TABLE login (...原创 2013-04-17 23:49:22 · 90 阅读 · 0 评论 -
HIVE表创建/删除/ 截断
下文只描述不常见的Hive创建|删除|截断表的用法指定数据库创建表如果不指定数据库,hive会把表创建在default数据库下,假设有一个hive的数据库mydb,要创建表到mydb,如下:CREATE TABLE mydb.pokes(foo INT,bar STRING);或者是use mydb; --把当前数据库指向mydbCREATE TABLE pok...原创 2013-04-17 23:44:37 · 211 阅读 · 0 评论 -
Hive数据类型
列类型 Hive支持的数据类型如下: 原生数据类型:TINYINTSMALLINTINTBIGINTBOOLEANFLOATDOUBLESTRINGBINARY(好像是较高版本才有的类型)TIMESTAMP复合类型:arrays:ARRAY<data_type>maps:MAP<primitive_typ...原创 2013-04-17 23:33:29 · 175 阅读 · 0 评论 -
Hive分享教程2-Hive语法
Hive的语法与SQL相似,细看例子 creating tables [code="sql"] CREATE TABLE tmp_table #表名 { title string , #字段名 字段类型 minimun_bid double, quantity bigint, have_in...原创 2012-07-03 13:09:00 · 135 阅读 · 0 评论 -
hive中简单介绍分区表(partition table),含动态分区(dynamic partition)与静态分区(static partition)...
hive中创建分区表没有什么复杂的分区类型(范围分区、列表分区、hash分区、混合分区等)。分区列也不是表中的一个实际的字段,而是一个或者多个伪列。意思是说在表的数据文件中实际上并不保存分区列的信息与数据。下面的语句创建了一个简单的分区表:create table partition_test(member_id string,name string)partition...原创 2012-07-05 18:22:05 · 156 阅读 · 0 评论 -
hive0.9.0与hbase0.94.0整合问题
hi all: 今天将hive和hbase升级,分别将hive升级到0.9.0,hbase升级到0.94.0,原来hadoop的环境是1.0.3,升级完后,hive和hbase能单独运行成功,当然,hadoop集群是正常启动的。但是发现,在hive中使用show tables、desc table操作,都是正常的,但是使用select 的时候就会报错,查看hive的日志,有以下问题:2...原创 2012-07-27 16:52:30 · 125 阅读 · 0 评论 -
Hive授权(Security配置)
摘:https://cwiki.apache.org/Hive/languagemanual-auth.html https://cwiki.apache.org/Hive/authdev.html http://grokbase.com/t/hive/user/11aksphhas/authorization-and-remote-connectio...原创 2013-05-08 23:29:27 · 1083 阅读 · 0 评论 -
HIVE调优的两个好用参数
HIVE调优有两点是很好用的 摘:https://speakerdeck.com/philiptromans/hive-optimisation-tips-tricks 1.MapJoin旧版本HIVE需要自行在查询/子查询的SELECT关键字后面添加/*+ MAPJOIN(tablelist) */提示优化器转化为MapJoin。高版本只需设置:set hiv...原创 2013-05-10 16:36:55 · 249 阅读 · 0 评论 -
再谈GenericUDAF(以collect_set源码分析)
最近对Generic UDAF思索了一下,感觉最关键的是理解UDAF执行的每一步过程的输入与输出,其实步骤根据说明来编写相关代码就基本没问题,但是需要注意的是,数据类型需要统一,建议使用 Hadoop 数据类型,即分布式对象。实践中证实使用writable系列的类型比java系列的类型简单. 不要尝试同时使用二种系列的类型, 中间容易出现ClassCastException....原创 2013-05-25 22:35:27 · 855 阅读 · 0 评论 -
记录中的最大行max_row
import java.util.Arrays;import java.util.ArrayList;import java.util.List;import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;import org.apache.hadoop.hive.ql....原创 2013-05-26 11:52:46 · 3186 阅读 · 0 评论 -
HIVE MAP排序 GenericUDF
package com.duowan.hive.udf.generic;import java.util.ArrayList;import java.util.Collections;import java.util.Comparator;import java.util.HashMap;import java.util.LinkedHashMap;import j...原创 2013-07-03 17:24:44 · 1272 阅读 · 0 评论 -
HIVE GenericeUDF------row_number
HIVE的row_number函数,类似于Oracle的ROW_NUMBER函数,实现在HIVE跑Map/Reduce的Reduce过程中取行号,一般应用于Sort By,Order By具体代码如下: import org.apache.commons.lang.StringUtils;import org.apache.hadoop.hive.ql.exec.Descrip...原创 2013-07-03 22:33:13 · 450 阅读 · 0 评论 -
Hive0.11.0版本新特征
一、文件格式二、字段类型三、窗口函数四、参数配置五、授权六、Join优化七、JDBC 官网还没有完善,详细见http://docs.hortonworks.com/HDPDocuments/HDP2/HDP-2.0.0.2/ds_Hive/language_manual/ptf-window.html ...原创 2013-07-11 19:59:56 · 114 阅读 · 0 评论 -
HIVE 窗口及分析函数 应用场景
窗口函数应用场景:(1)用于分区排序(2)动态Group By(3)Top N(4)累计计算(5)层次查询 一、分析函数用于等级、百分点、n分片等。函数说明RANK()返回数据项在分组中的排名,排名相等会在名次中留下空位DENSE_RANK()返回数据项在分组中的排名,排名相等会在名次中不会留下空位NTILE()返...原创 2013-07-16 23:06:34 · 912 阅读 · 0 评论 -
hive元数据中utf8的修改
表或者字段有中文的时候需要修改hive的元数据库的设置。 以mysql为例子,当mysql的字符集设置成utf8的时候使用hive会有问题,详细见hive的wiki。所以当hive使用mysql作为元数据库的时候mysql的字符集要设置成latin1。 为了保存那些utf8的中文,要将mysql中存储注释的那几个字段的字符集单独修改为utf8。 修改字段注释...原创 2013-04-16 17:55:09 · 457 阅读 · 0 评论 -
Hive CLI 常用操作
hive命令行执行一个查询$HIVE_HOME/bin/hive -e 'select a.col from tab1 a'之后过程中,会在终端上显示mapreduce的进度,执行完毕后,最后把查询结果输出到终端上,接着hive进程退出,不会进入交互模式。 使用静音模式执行一个查询$HIVE_HOME/bin/hive -S -e 'select a.col...原创 2013-04-17 23:04:02 · 108 阅读 · 0 评论 -
hive并发调用的运行方式-个人经验篇
前言使用hive,我们很多情况下会并发调用hive程序,将sql任务转换成mapreuce提交到hadoop集群中,而在本人使用hive的过程中,发现并发调用hive有几个问题,在这个和大家分享下.正文默认安装hive,hive是使用derby内存数据库保存hive的元数据,这样是不可以并发调用hive的,需要配置为使用mysql保存hive的元数据。 运行hive,可...原创 2013-04-17 23:22:02 · 839 阅读 · 0 评论 -
Hive索引Demo
一、创建表CREATE TABLE employees ( name STRING, salary FLOAT, subordinates ARRAY<STRING>, deductions MAP<STRING, FLOAT>, address STRUCT<st...原创 2013-04-26 23:46:26 · 99 阅读 · 0 评论