hive中的bucket table
前言
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的更多相关文章
- 当在hive中show table …
当在hive中show table 时如果报以下错时 FAILED: Error in metadata: javax.jdo.JDODataStoreException: Error(s) were ...
- hive错误排查一:hive中执行 drop table命令卡住,删除表不成功
起因 公司用的AWS EMR上的hive,突然不能删除表了. 经过 分析来看,估计是元数据那块出了问题.从元数据入手,元数据存在mysql的hive数据库中 直接使用hive配置文件hive-site ...
- Hive中的数据库(Database)和表(Table)
在前面的文章中,介绍了可以把Hive当成一个"数据库",它也具备传统数据库的数据单元,数据库(Database/Schema)和表(Table). 本文介绍一下Hive中的数据库( ...
- hive中的null
在处理流水增量表的时候,出现了一个判定的失误. select a.a1,a.a2 from ( select a.a1 ,,) as diff ,a.a2 from a lefter join b o ...
- hive中简单介绍分区表(partition table)——动态分区(dynamic partition)、静态分区(static partition)
一.基本概念 hive中分区表分为:范围分区.列表分区.hash分区.混合分区等. 分区列:分区列不是表中的一个实际的字段,而是一个或者多个伪列.翻译一下是:“在表的数据文件中实际上并不保存分区列的信 ...
- Hive学习笔记——Hive中的分桶
对于每一个表(table)或者分区, Hive可以进一步组织成桶,也就是说桶是更为细粒度的数据范围划分.Hive也是针对某一列进行桶的组织.Hive采用对列值哈希,然后除以桶的个数求余的方式决定该条记 ...
- hive中使用rcfile
(1)建student & student1 表:(hive 托管)create table student(id INT, age INT, name STRING)partitioned ...
- HIVE中join、semi join、outer join
补充说明 left outer join where is not null与left semi join的联系与区别:两者均可实现exists in操作,不同的是,前者允许右表的字段在select或 ...
- Hive中的一些点
hive严格模式 Hive中Order by和Sort by的区别是什么? hive中order by,sort by, distribute by, cluster by作用以及用法 Hadoop ...
随机推荐
- [八分之三的男人] POJ - 1741 点分治 && 点分治笔记
题意:给出一棵带边权树,询问有多少点对的距离小于等于\(k\) 本题解参考lyd的算法竞赛进阶指南,讲解的十分清晰,比网上那些讲的乱七八糟的好多了 不过写起来还是困难重重(史诗巨作 打完多校更详细做法 ...
- Linux lamp环境验证码无法显示
2018-12-19 php验证码无法在前端显示 原因: 缺少gd库 解决办法: CentOS / RedHat / Fedora系统 sudo yum install php-gd -y Debia ...
- Domain 表达式的用法
什么是Domain [('create_uid','=',user.id)] Domain是个多条件的列表,每个条件是一个三元表达式:[(字段名,操作符,值), (字段名,操作符,值)] Domain ...
- (转)Shell分析服务器日志
一.目录 转载链接:https://mp.weixin.qq.com/s/W1ekSiHgbGInqQ9HmZaJDA 自己的小网站跑在阿里云的ECS上面,偶尔也去分析分析自己网站服务器日志,看看网站 ...
- rocketmq的消息过滤-sql方式
通常我们会使用Tag过滤 特殊情况下我们也可以使用userproperties+TAGS过滤 , sql92定义 这两种都是在服务器端完成过滤, 对于超大数据量的场景(1小时4000W+)不要在客流端 ...
- js 删除数组的某一项或者几项的方法
1.arr.splice() splice(index,len,[item]) 注释:该方法会改变原始数组. splice有3个参数,它也可以用来替换/删除/添加数组内某一个或者几个值 inde ...
- c#操作mysql
using System; using MySql.Data; using MySql.Data.MySqlClient; using System.Data; using System.Linq; ...
- [大数据入门]实战练习 安装Cloudera-Hadoop集群
实验环境规划 Hostname IP OS Roles Machine 0 elephant 192.168.124.131 Machine 1 tiger 192.168.124.132 ...
- centos 7安装phpMyadmin
1.phpmyadmin官网下载多语言包 2.找到libraries目录下的config.default.php1)查找$cfg['PmaAbsoluteUri'] 设置默认访问网址 2)查找$cfg ...
- MySQL插入记录 insert
一.insert insert tb_name [(col_name,......)] {values | value} ({expr | default } ....... ) , ( ... ) ...