前言

bucket table(桶表)是对数据进行哈希取值,然后放到不同文件中存储

应用场景

当数据量比较大,我们需要更快的完成任务,多个map和reduce进程是唯一的选择。
但是如果输入文件是一个的话,map任务只能启动一个。
此时bucket table是个很好的选择,通过指定CLUSTERED的字段,将文件通过hash打散成多个小文件。

create table test
(id int,
name string
)
CLUSTERED BY(id) SORTED BY(name) INTO 32 BUCKETS
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ‘/t’;

执行insert前不要忘记设置

set hive.enforce.bucketing = true;

强制采用多个reduce进行输出

hive> INSERT OVERWRITE TABLE test select * from test09;
Total MapReduce jobs = 1
Launching Job 1 out of 1
Number of reduce tasks determined at compile time: 32
In order to change the average load for a reducer (in bytes):
set hive.exec.reducers.bytes.per.reducer=<number>
In order to limit the maximum number of reducers:
set hive.exec.reducers.max=<number>
In order to set a constant number of reducers:
set mapred.reduce.tasks=<number>
Starting Job = job_201103070826_0018, Tracking URL = http://hadoop00:50030/jobdetails.jsp?jobid=job_201103070826_0018
Kill Command = /home/hjl/hadoop/bin/../bin/hadoop job -Dmapred.job.tracker=hadoop00:9001 -kill job_201103070826_0018
2011-03-08 11:34:23,055 Stage-1 map = 0%, reduce = 0%
2011-03-08 11:34:27,084 Stage-1 map = 6%, reduce = 0%
*************************************************
Ended Job = job_201103070826_0018
Loading data to table test
5 Rows loaded to test
OK
Time taken: 175.036 seconds

hive的sunwg_test11文件夹下面出现了32个文件,而不是一个文件

[hadoop@hadoop00 ~]$ hadoop fs -ls /ticketdev/test
Found items
-rw-r–r– ticketdev hadoop -- : /ticketdev/test/attempt_201103070826_0018_r_000000_0
-rw-r–r– ticketdev hadoop -- : /ticketdev/test/attempt_201103070826_0018_r_000001_0
-rw-r–r– ticketdev hadoop -- : /ticketdev/test/attempt_201103070826_0018_r_000002_0
-rw-r–r– ticketdev hadoop -- : /ticketdev/test/attempt_201103070826_0018_r_000003_0
-rw-r–r– ticketdev hadoop -- : /ticketdev/test/attempt_201103070826_0018_r_000004_0
-rw-r–r– ticketdev hadoop -- : /ticketdev/test/attempt_201103070826_0018_r_000005_0
-rw-r–r– ticketdev hadoop -- : /ticketdev/test/attempt_201103070826_0018_r_000006_0
-rw-r–r– ticketdev hadoop -- : /ticketdev/test/attempt_201103070826_0018_r_000007_0
-rw-r–r– ticketdev hadoop -- : /ticketdev/test/attempt_201103070826_0018_r_000008_0
-rw-r–r– ticketdev hadoop -- : /ticketdev/test/attempt_201103070826_0018_r_000009_0
-rw-r–r– ticketdev hadoop -- : /ticketdev/test/attempt_201103070826_0018_r_000010_0
-rw-r–r– ticketdev hadoop -- : /ticketdev/test/attempt_201103070826_0018_r_000011_0
-rw-r–r– ticketdev hadoop -- : /ticketdev/test/attempt_201103070826_0018_r_000012_0
-rw-r–r– ticketdev hadoop -- : /ticketdev/test/attempt_201103070826_0018_r_000013_0
-rw-r–r– ticketdev hadoop -- : /ticketdev/test/attempt_201103070826_0018_r_000014_0
-rw-r–r– ticketdev hadoop -- : /ticketdev/test/attempt_201103070826_0018_r_000015_0
-rw-r–r– ticketdev hadoop -- : /ticketdev/test/attempt_201103070826_0018_r_000016_0
-rw-r–r– ticketdev hadoop -- : /ticketdev/test/attempt_201103070826_0018_r_000017_0
-rw-r–r– ticketdev hadoop -- : /ticketdev/test/attempt_201103070826_0018_r_000018_0
-rw-r–r– ticketdev hadoop -- : /ticketdev/test/attempt_201103070826_0018_r_000019_0
-rw-r–r– ticketdev hadoop -- : /ticketdev/test/attempt_201103070826_0018_r_000020_0
-rw-r–r– ticketdev hadoop -- : /ticketdev/test/attempt_201103070826_0018_r_000021_0
-rw-r–r– ticketdev hadoop -- : /ticketdev/test/attempt_201103070826_0018_r_000022_0
-rw-r–r– ticketdev hadoop -- : /ticketdev/test/attempt_201103070826_0018_r_000023_0
-rw-r–r– ticketdev hadoop -- : /ticketdev/test/attempt_201103070826_0018_r_000024_0
-rw-r–r– ticketdev hadoop -- : /ticketdev/test/attempt_201103070826_0018_r_000025_0
-rw-r–r– ticketdev hadoop -- : /ticketdev/test/attempt_201103070826_0018_r_000026_0
-rw-r–r– ticketdev hadoop -- : /ticketdev/test/attempt_201103070826_0018_r_000027_0
-rw-r–r– ticketdev hadoop -- : /ticketdev/test/attempt_201103070826_0018_r_000028_0
-rw-r–r– ticketdev hadoop -- : /ticketdev/test/attempt_201103070826_0018_r_000029_0
-rw-r–r– ticketdev hadoop -- : /ticketdev/test/attempt_201103070826_0018_r_000030_0
-rw-r–r– ticketdev hadoop -- : /ticketdev/test/attempt_201103070826_0018_r_000031_0

文件被打散后,可以启动多个mapreduce task
当执行一些操作的时候,你会发现系统启动了32个map任务

hive中的bucket table的更多相关文章

  1. 当在hive中show&nbsp;table&nbsp;…

    当在hive中show table 时如果报以下错时 FAILED: Error in metadata: javax.jdo.JDODataStoreException: Error(s) were ...

  2. hive错误排查一:hive中执行 drop table命令卡住,删除表不成功

    起因 公司用的AWS EMR上的hive,突然不能删除表了. 经过 分析来看,估计是元数据那块出了问题.从元数据入手,元数据存在mysql的hive数据库中 直接使用hive配置文件hive-site ...

  3. Hive中的数据库(Database)和表(Table)

    在前面的文章中,介绍了可以把Hive当成一个"数据库",它也具备传统数据库的数据单元,数据库(Database/Schema)和表(Table). 本文介绍一下Hive中的数据库( ...

  4. hive中的null

    在处理流水增量表的时候,出现了一个判定的失误. select a.a1,a.a2 from ( select a.a1 ,,) as diff ,a.a2 from a lefter join b o ...

  5. hive中简单介绍分区表(partition table)——动态分区(dynamic partition)、静态分区(static partition)

    一.基本概念 hive中分区表分为:范围分区.列表分区.hash分区.混合分区等. 分区列:分区列不是表中的一个实际的字段,而是一个或者多个伪列.翻译一下是:“在表的数据文件中实际上并不保存分区列的信 ...

  6. Hive学习笔记——Hive中的分桶

    对于每一个表(table)或者分区, Hive可以进一步组织成桶,也就是说桶是更为细粒度的数据范围划分.Hive也是针对某一列进行桶的组织.Hive采用对列值哈希,然后除以桶的个数求余的方式决定该条记 ...

  7. hive中使用rcfile

    (1)建student & student1 表:(hive 托管)create table student(id INT, age INT, name STRING)partitioned ...

  8. HIVE中join、semi join、outer join

    补充说明 left outer join where is not null与left semi join的联系与区别:两者均可实现exists in操作,不同的是,前者允许右表的字段在select或 ...

  9. Hive中的一些点

    hive严格模式 Hive中Order by和Sort by的区别是什么? hive中order by,sort by, distribute by, cluster by作用以及用法 Hadoop ...

随机推荐

  1. MySQL压缩版Windows环境进行安装配置

    MySQL下载地址:https://dev.mysql.com/downloads/mysql/ 选择对应的系统和相应的版本后点击Download进入下载页面,不需要登录,点击下面的“No thank ...

  2. SpringBoot入门(IDEA篇)(二)

    一.SpringBoot启动的3种方式 第一种:借助IDE工具直接启动 run as 第二种:mvn命令启动 1:打开命令行,进入到项目目录中(我这里还是用上次建立的dog项目来操作)cd E:\Wo ...

  3. css3 实现 tooltip

    /* START TOOLTIP STYLES */ [tooltip] { position: relative; /* opinion 1 */ } /* Applies to all toolt ...

  4. float 浮动 文档流和文字流区别

    关于float属性的脱离文档流的问题 使用float浮动后,元素虽然会脱离文档流,但还处在文本流的位置当中,所以就不会出现重叠的效果吗? 下面我自己试了一下,给两个DIV分别设置了样式,而只给第一个D ...

  5. CentOS系统服务配置资源限制ulimit

    使用Systemd管理服务的,均可使用此方法. 在 /usr/lib/systemd/system/xxx.service中,添加如下内容即可: [Service] # Other directive ...

  6. java email

    package email; import java.io.File;import java.util.Date;import java.util.Properties; import javax.a ...

  7. 用vue建新项目的过程---在工作中

    1.git clone 项目地址 2.如果没装vue-cli,就先装下vue-cli  (如果报错可能是没按管理员身份安装) 3.vue init webpack 项目名 4.安装项目依赖 npm i ...

  8. Python与C相互调用、编译

    因为最近学习Boost::python的缘故,想尝试下不同语言之间的相互编译. 参考资料:http://blog.csdn.net/joliny/article/details/2457197. 很吃 ...

  9. dubbo序列化hibernate.LazyInitializationException could not initialize proxy - no Session懒加载异常的解决

    dubbo序列化,hibernate.LazyInitializationException could not initialize proxy - no Session懒加载异常的解决 转载声明: ...

  10. word-wrap和word-break的区别吗?

    word-wrap: css的 word-wrap 属性用来标明是否允许浏览器在单词内进行断句,这是为了防止当一个字符串太长而找不到它的自然断句点时产生溢出现象. word-break: css的 w ...