Hive中表连接操作大致分为以下四种: 1:join即等值连接,只有某个值在两个表中同时存在才会被检索出来。 2:left outer join即左外连接,左边表中的值无论是否存在右表中,都会输出,但是右表中的记录只有在左表中存在时才会输出。 3:right outer join即右外连接,右边表中
分类:
其他好文 时间:
2016-01-31 21:33:33
阅读次数:
201
概述: 一个Hive查询生成多个map reduec job,一个map reduce job又有map,reduce,spill,Shuffle,sort等几个阶段,所以针对Hive查询的优化可以大致分为针对MR中单个步骤的优化(其中又会分细节),针对MR全局的优化,和针对整个查询(多MR job
分类:
其他好文 时间:
2016-01-31 21:27:55
阅读次数:
402
这里用到的nginx日志是网站的访问日志,比如: [java] view plain copy 180.173.250.74 - - [08/Jan/2015:12:38:08 +0800] "GET /avatar/xxx.png HTTP/1.1" 200 968 "http://www.ite
分类:
其他好文 时间:
2016-01-31 21:26:40
阅读次数:
335
1.Hive分区表 Hive使用select语句进行查询的时候一般会扫描整个表内容,会消耗很多时间做没必要的工作。Hive可以在创建表的时候指定分区空间,这样在做查询的时候就可以很好的提高查询的效率。 创建分区表的语法: [java] view plain copy create table tab
分类:
其他好文 时间:
2016-01-31 21:24:30
阅读次数:
342
Hive严格模式 Hive提供了一个严格模式,可以防止用户执行那些可能产生意向不到的不好的效果的查询。说通俗一点就是这种模式可以阻止某些查询的执行。通过如下语句设置严格模式: [java] view plain copy hive> set hive.mapred.mode=strict; 设置为严
分类:
其他好文 时间:
2016-01-31 21:23:24
阅读次数:
333
UDTF(User-Defined Table-Generating Functions)用来解决输入一行输出多行(one-to-many maping)的需求。 编写自己的UDTF: 1.继承org.apache.hadoop.hive.ql.udf.generic.GenericUDTF。 2.
分类:
其他好文 时间:
2016-01-31 21:20:33
阅读次数:
659
小文件是如何产生的 1.动态分区插入数据,产生大量的小文件,从而导致map数量剧增。 2.reduce数量越多,小文件也越多(reduce的个数和输出文件是对应的)。 3.数据源本身就包含大量的小文件。 小文件问题的影响 1.从Hive的角度看,小文件会开很多map,一个map开一个JVM去执行,所
分类:
其他好文 时间:
2016-01-31 21:17:06
阅读次数:
223
Hive中的Map Join即map side join工作原理是在Map端把小表加载到内存中,然后读取大表,和内存中的小表完成连接操作。MapJoin使用了分布式缓存技术。 Map Join的优点: 1.不消耗集群的reduce资源。 2.减少了reduce操作,加快了程序执行。 3.降低网络负载
分类:
其他好文 时间:
2016-01-31 21:13:22
阅读次数:
397
Hive默认是静态分区,我们在插入数据的时候要手动设置分区,如果源数据量很大的时候,那么针对一个分区就要写一个insert,比如说,我们有很多日志数据,我们要按日期作为分区字段,在插入数据的时候我们不可能手动的去添加分区,那样太麻烦了。还好,Hive提供了动态分区,动态分区简化了我们插入数据时的繁琐
分类:
其他好文 时间:
2016-01-31 21:12:31
阅读次数:
395
对于每一个表(table)或者分区,Hive可以进一步组织成桶。Hive也是针对某一列进行桶的组织。Hive采用对列值哈希,然后除于桶的个数求余的方式决定该条记录存放在哪个桶当中。采用桶能够带来一些好处,比如JOIN操作。对于JOIN操作两个表有一个相同的列,如果对这两个表都进行了桶操作。那么将保存
分类:
其他好文 时间:
2016-01-31 21:07:37
阅读次数:
217