Hive
# Hive
学要无止尽
任职于达摩院自动驾驶实验室;负责自动驾驶云端计算的架构和研发;
展开
-
hive 数据倾斜总结
在做Shuffle阶段的优化过程中,遇到了数据倾斜的问题,造成了对一些情况下优化效果不明显。主要是因为在Job完成后的所得到的Counters是整个Job的总和,优化是基于这些Counters得出的平均值,而由于数据倾斜的原因造成map处理数据量的差异过大,使得这些平均值能代表的价值降低。Hive的执行是分阶段的,map处理数据量的差异取决于上一个stage的reduce输出,所以如何将数据均匀的转载 2013-01-23 11:35:29 · 503 阅读 · 0 评论 -
hive 中的两表join
作为数据分析中经常进行的join 操作,传统DBMS 数据库已经将各种算法优化到了极致,而对于hadoop 使用的mapreduce 所进行的join 操作,去年开始也是有各种不同的算法论文出现,讨论各种算法的适用场景和取舍条件,本文讨论hive 中出现的几种join 优化,然后讨论其他算法实现,希望能给使用hadoop 做数据分析的开发人员提供一点帮助. Facebook 今年在转载 2013-03-07 16:21:31 · 2684 阅读 · 0 评论 -
HIVE开发注意事项
HIVE开发注意事项1 HIVE开发注意事项1.1 始终保持怀疑的态度来使用Hive1.2 HIVE环境中账户分类1) 目前hive分为logana和payods两个应用用户,前者用作日志分析,后者用作内容分析,与gp保持一致1.3 数据存储及物理文件目录1) 目录结构:payods作为“内容”这边的总目录,下面二级目录以数据层次划分,数据层原创 2013-03-30 17:59:01 · 2067 阅读 · 0 评论 -
hive 中 Order by, Sort by ,Dristribute by,Cluster By 的作用和用法
order byorder by 会对输入做全局排序,因此只有一个reducer(多个reducer无法保证全局有序)只有一个reducer,会导致当输入规模较大时,需要较长的计算时间。set hive.mapred.mode=nonstrict; (default value / 默认值)set hive.mapred.mode=strict; order b转载 2013-07-03 10:24:42 · 685 阅读 · 0 评论 -
Hive partition 分区表
分区表的优势:不不言而喻,可以针对于指定的分区的数据进行查询,不必遍历整张hive表里面的数据。分区表操作:必须在表定义时创建partitiona、单分区建表语句:create table day_table (id int, content string) partitioned by (dt string);单分区表,按天分区,在表结构中原创 2013-01-25 15:23:43 · 2034 阅读 · 0 评论 -
带索引的HIVE
hive的查询跟普通的hadoop mapreduce没有什么大的区别,都是对原始数据的暴力扫描,如果能够像数据库那样,使用索引,那么数据扫描的速度将会大幅度提升上次在mapreduce上使用了索引,具体参见下面这个链接http://user.qzone.qq.com/165162897/blog/1351432946这次在这个基础上拓展到hive里(实际上也是一个特殊的inputfo转载 2013-09-22 12:39:50 · 1007 阅读 · 0 评论 -
hive中分组取前N个值的实现
背景假设有一个学生各门课的成绩的表单,应用hive取出每科成绩前100名的学生成绩。这个就是典型在分组取Top N的需求。 解决思路对于取出每科成绩前100名的学生成绩,针对学生成绩表,根据学科,成绩做order by排序,然后对排序后的成绩,执行自定义函数row_number(),必须带一个或者多个列参数,如ROW_NUMBER(col1, ....),它转载 2014-07-25 16:56:55 · 1235 阅读 · 0 评论 -
Hive SQL的编译过程
Hive是基于Hadoop的一个数据仓库系统,在各大公司都有广泛的应用。美团数据仓库也是基于Hive搭建,每天执行近万次的Hive ETL计算流程,负责每天数百GB的数据存储和分析。Hive的稳定性和性能对我们的数据分析非常关键。在几次升级Hive的过程中,我们遇到了一些大大小小的问题。通过向社区的咨询和自己的努力,在解决这些问题的同时我们对Hive将SQL编译为MapReduce的过程有转载 2014-12-15 15:11:15 · 642 阅读 · 0 评论 -
Hive – Distinct 的实现
准备数据语句SELECT COUNT, COUNT(DISTINCT uid) FROM logs GROUP BY COUNT;hive> SELECT * FROM logs;OKa 苹果 3a 橙子 3a 烧鸡 1b 烧鸡 3 hive> SELECT COUNT, COUNT(DISTINCT uid转载 2014-12-15 12:09:04 · 4110 阅读 · 0 评论 -
hive中UDF、UDAF和UDTF使用
Hive进行UDF开发十分简单,此处所说UDF为Temporary的function,所以需要hive版本在0.4.0以上才可以。一、背景:Hive是基于Hadoop中的MapReduce,提供HQL查询的数据仓库。Hive是一个很开放的系统,很多内容都支持用户定制,包括:a)文件格式:Text File,Sequence Fileb)内存中的数据格式: Java Intege原创 2013-01-20 22:54:10 · 17782 阅读 · 3 评论 -
hive 执行时reduce 任务个数 设置
Hive怎样决定reducer个数?Hadoop MapReduce程序中,reducer个数的设定极大影响执行效率 ,这使得Hive怎样决定reducer个数成为一个关键问题。遗憾的是Hive的 估计机制很弱,不指定reducer个数的情况下,Hive会猜测确定一个reducer个数,基于以下两个设定:1. hive.exec.reducers.bytes.per.reducer原创 2013-03-28 15:00:49 · 2332 阅读 · 0 评论 -
hive中的LEFT SEMI JOIN
LEFT SEMI JOIN 是 IN/EXISTS 子查询的一种更高效的实现。Hive 当前没有实现 IN/EXISTS 子查询,所以你可以用 LEFT SEMI JOIN 重写你的子查询语句。LEFT SEMI JOIN 的限制是, JOIN 子句中右边的表只能在 ON 子句中设置过滤条件,在 WHERE 子句、SELECT 子句或其他地方过滤都不行。转载 2013-01-25 11:29:16 · 4958 阅读 · 0 评论 -
HIVE UDF UDAF UDTF 区别 使用
自己写代码时候的利用到的模板UDF步骤:1.必须继承org.apache.hadoop.hive.ql.exec.UDF2.必须实现evaluate函数,evaluate函数支持重载Java代码 "font-size: x-small;">package com.alibaba.hive.udf; import转载 2013-01-20 22:57:28 · 5761 阅读 · 0 评论 -
Hive SQL使用和数据加载
Hive 是facebook开源的一个基于hadoop框架的查询工具,也就是说,需要用hive的话,就要先安装hadoop。这次是小结一下最近用hive的心得,经验分享。hadoop和hive,pig,hbase的安装配置以后专门另开个连载说比较好。所以,我假设你已经有hive了。1.字段的数据类型。hive实际上为了数据挖掘的需要,对hive表的字转载 2013-03-15 14:08:11 · 1219 阅读 · 0 评论 -
Hive UDF实现分析函数row_number
Oracle的分析函数row_number是十分有用的功能,但是將ETL迁移到Hive中发现没有的功能,我们实现了一个UDF实现了该函数,代码如下:package com.tudou.hive.func;import org.apache.hadoop.hive.ql.exec.UDF;public class RowNumber extends UDF { priva原创 2013-03-30 22:05:33 · 2702 阅读 · 0 评论 -
Hadoop 中的两表join
作为数据分析中经常进行的join 操作,传统DBMS 数据库已经将各种算法优化到了极致,而对于hadoop 使用的mapreduce 所进行的join 操作,去年开始也是有各种不同的算法论文出现,讨论各种算法的适用场景和取舍条件,本文讨论hive 中出现的几种join 优化,然后讨论其他算法实现,希望能给使用hadoop 做数据分析的开发人员提供一点帮助. Facebook 今年在转载 2013-03-30 22:48:11 · 780 阅读 · 0 评论 -
hive mapjoin 使用 和个人理解
遇到一个hive的问题,如下hive sql:select t1.a,t1.b from table t1 join table2 t2 on ( t1.a=t2.a and t1.datecol=20110802)该语句中B表有30亿行记录,t1表只有100行记录,而且t2表中数据倾斜特别严重,有一个key上有15亿行记录,在运行过程中特别的慢,而且在reduece的过程中原创 2013-02-27 11:18:50 · 10960 阅读 · 2 评论 -
hive join
hive(0.9.0):1.支持equality joins, outer joins, and left semi joins2.只支持等值条件3.支持多表join原理hive执行引擎会将HQL“翻译”成为map-reduce任务,如果多张表使用同一列做join则将被翻译成一个reduce,否则将被翻译成多个map-reduce任务。eg:SELECT a.val转载 2013-02-27 10:22:58 · 517 阅读 · 0 评论 -
hive 中的 关系运算
1. 等值比较: = 语法:A=B 操作类型:所有基本类型 描述: 如果表达式A与表达式B相等,则为TRUE;否则为FALSE 举例: hive>select 1 from lxw_dual where 1=1; 12. 不等值比较: 语法: A 操原创 2013-03-21 16:57:43 · 21680 阅读 · 0 评论 -
HIve join详解
1.什么是等值连接?2.hive转换多表join时,如果每个表在join字句中,使用的都是同一个列,该如何处理?3.LEFT,RIGHT,FULL OUTER连接的作用是什么?4.LEFT或RIGHT join是连接从左边还有右边?Hive表连接的语法支持如下:Sql代码 join_table: table_reference JOIN ta原创 2015-05-25 22:53:17 · 2242 阅读 · 0 评论