前言

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. 【算法笔记】B1051 复数乘法

    题目链接:https://pintia.cn/problem-sets/994805260223102976/problems/994805274496319488 思路: 难点在于对复数其他形式的认 ...

  2. 用Laya制作简单的动画

    (function () { var layaGameInit = window.layaGameInit || {}; var WebGL = Laya.WebGL; var Browser = L ...

  3. 获取浏览器用户代理(user-agent)

    获取浏览器用户代理(user-agent) 用户代理(user-agent)是浏览器客户端与服务器交互时的重要信息之一,用于帮助网站识别请求用户的浏览器类别,以便于网站发送相应的网页数据. 用户代理数 ...

  4. linux忘记root密码怎么办

    如何找回root密码,如果我们不小心,忘记root密码,怎么找回? 思路:进入到单用户模式,然后修改root密码.因为进入单用户模式,root不需要密码就可以登录. 详细过程: 1.打开虚拟机 2.开 ...

  5. border.css(解决移动端1px问题)

    由于某些机型分辨率过高,会导致1px变成2-多px像素的问题,引用bordercss解决 @charset "utf-8"; .border, .border-top, .bord ...

  6. python3.6 for pygame安装

    首先下载好文件: pygame下载网址:http://www.lfd.uci.edu/~gohlke/pythonlibs/#pygame 找到pygame-1.9.2b8-cp36-cp36m-wi ...

  7. springboot配置双视图解析器

    因项目要求,需要同时支持html和jsp页面,所以在springboot的基础上配置双视图解析器. 重点在于,抛开原来的resources目录结构层,这层只放application.propertie ...

  8. Js正则Replace方法

    JS正则的创建有两种方式: new RegExp() 和 直接字面量. //使用RegExp对象创建 var regObj = new RegExp("(^\s+)|(\s+$)" ...

  9. unittest单元测试框架总结(转载)

    转载:https://www.cnblogs.com/yufeihlf/p/5707929.html unittest单元测试框架不仅可以适用于单元测试,还可以适用WEB自动化测试用例的开发与执行,该 ...

  10. python 冒泡和快排,不多说

    #-*-coding:utf8-*- import random a=[] b=[] def init_array(): for i in range(10000): v = random.randi ...