Hive Tunning 补充 关于bucket
在前面的几篇文章当中一直有一个概念bucketing不清楚到底是怎么回事。
网友南京-李先森给了他收集的一些资料,如下:
Buckets 对指定列计算 hash,根据 hash 值切分数据,目的是为了并行,每一个 Bucket 对应一个文件。如将 user 列分散至 32 个 bucket,首先对 user 列的值计算 hash,对应 hash 值为 0 的 HDFS 目录为:/ warehouse /xiaojun/dt =20100801/ctry=US/part-00000;hash 值为 20 的 HDFS 目录为:/ warehouse /xiaojun/dt =20100801/ctry=US/part-00020
这段描述是说用了bucket之后的,那为什么要用bucket,没说,本着认真负责的态度,我从网上搜索到了Oreilly《Programming.Hive》这本书,然后在里面找到了答案,现在发出来和大家分享一下。
首先回顾一下分区,分区是切分数据的一种比较方便的方法,比较常用的就是按照日期来进行切分,bucket(中文意思就是篮子,可以放鸡蛋,哈哈)其实也是一种切分数据的方法。
假设我们有一张日志表,我们需要按照日期和用户id来分区,目的是为了加快查询谁哪天干了什么,如下:
CREATE TABLE weblog (url STRING, source_ip STRING) > PARTITIONED BY (dt STRING, user_id INT);
但是这里面用user_id去切分的话,就会产生很多很多的分区了,这些分区可大可小,这个数量是文件系统所不能承受的。
在这种情况下,我们既想加快查询速度,又避免出现如此多的小分区,篮子(bucket)就出现了。
具体的用法是:
CREATE TABLE weblog (user_id INT, url STRING, source_ip STRING) > PARTITIONED BY (dt STRING) BUCKETS;
首先按照日期分区,分区结束之后再按照user_id把日志放在96个篮子,这样同一个用户的所有日志都会在同一个篮子里面,并且一个篮子里面有好多用户的日志。
然后我们在插入数据的时候就要注意了,我们一定要设置hive.enforce.bucketing为true。
hive> SET hive.enforce.bucketing = true;hive> FROM raw_logs > INSERT OVERWRITE TABLE weblog > PARTITION (dt='2009-02-25') > SELECT user_id, url, source_ip WHERE dt='2009-02-25';
到此,bucket介绍完毕!
Hive Tunning 补充 关于bucket的更多相关文章
- Hive Tunning(二)优化存储
接着上一章我们讲的hive的连接策略,现在我们讲一下hive的数据存储. 下面是hive支持的数据存储格式,有我们常见的文本,JSON,XML,这里我们主要讲一下ORCFile. Built-in F ...
- Hive Tunning(三) 最佳实践
在上一讲的基础上,我们来做来一个实际的例子来展示如何在实操中进行高效的hive查询作业. (1)首先我们建立一个表 CREATE EXTERNAL TABLE pos_staging( txnid S ...
- Hive Tuning(一) 连接策略
群里共享了一本hive调优的书记,名叫<Hive Tunning>,就忍不住开始看了,也顺便记录一下自己学到的东西,备忘! 首先,这是hive的数据摘要,别问我什么意思,我也没看懂. 好, ...
- hive 桶相关特性分析
1. hive 桶相关概念 桶(bucket)是指将表或分区中指定列的值为key进行hash,hash到指定的桶中,这样可以支持高效采样工作. 抽样( sampling )可以在全体数 ...
- Hive之分区(Partitions)和桶(Buckets)
转自:http://www.aahyhaa.com/archives/316 hive引入partition和bucket的概念,中文翻译分别为分区和桶(我觉的不是很合适,但是网上基本都是这么翻译,暂 ...
- Hive基础之Hive环境搭建
Hive默认元数据信息存储在Derby里,Derby内置的关系型数据库.单Session的(只支持单客户端连接,两个客户端连接过去会报错): Hive支持将元数据存储在关系型数据库中,比如:Mysql ...
- 转载:几种 hive join 类型简介
作为数据分析中经常进行的join 操作,传统DBMS 数据库已经将各种算法优化到了极致,而对于hadoop 使用的mapreduce 所进行的join 操作,去年开始也是有各种不同的算法论文出现,讨论 ...
- Hive 模式设计
Hive看上去很像关系型数据库.不过,Hive实现和使用的方式和传统的关系型数据库非常不同.Hive是反模式的. 本文将重点介绍Hive中哪些模式是用户应该使用的,儿哪些是应该避免的 一.按天划分的表 ...
- Hive的数据模型及各模块的应用场景
Hive的数据模型 Hive数据模型.png 数据模型组成及应用场景 Hive的数据模型主要有:database.table.partition.bucket四部分: 数据模型之database ...
随机推荐
- youku视频
获取视频信息: http://v.youku.com/player/getPlayList/VideoIDS/153548356 <div class="player" id ...
- JVM 入门三板斧
一个JVM实例只存在一个堆内存,堆内存的大小是可以调节的.类加载器读取了类文件后,需要把类.方法.常变量放到堆内存中,保存所有引用类型的真实信息,以方便执行器执行,堆内存分为三部分: Young Ge ...
- 转 阿里Dubbo疯狂更新,关Spring Cloud什么事?
原文地址: http://www.ityouknow.com/springcloud/2017/11/20/dubbo-update-again.html阿里Dubbo疯狂更新,关Spring Clo ...
- Python 爬虫实例(15) 爬取 百度百聘(微信公众号)
今天闲的无聊,爬取了一个网站,百度百聘,仅供学习参考 直接上代码: #-*-coding:utf-8-*- from common.contest import * def spider(): hea ...
- 用python参加Kaggle的经验总结【转】
用python参加Kaggle的经验总结 转载自:http://www.jianshu.com/p/32def2294ae6,作者 JxKing 最近挤出时间,用python在kaggle上试了 ...
- python3 装饰器应用举例
[引子] python 中的装饰器是oop(面向对象编程)设计模式.之装饰器模式的一个应用.由于有语法糖衣的缘故.所以写起来也更加方便 [从一个比较经典的应用场景来讲解装饰器] 有过一定编程经历的工程 ...
- CentOS 安装Mosquitto及测试
系统信息,阿里云服务器 安装工具 yum install gcc gcc-c++ yum install openssl-devel yum install c-ares-devel yum inst ...
- 精确光源(Punctual Light Sources)
<Physically-Based Shading Models in Film and Game Production>(SIGGRAPH 2010 Course Notes) (地址: ...
- Nginx(五):浏览器本地缓存设置
浏览器缓存(BrowserCaching) 浏览器缓存是为了加速浏览,浏览器在用户磁盘上,对最近请求过的文档进行存储.当访问者再次请求这个页面时,浏览器就可以从本地磁盘显示文档,这样,就可以加速页面的 ...
- hdu-2045 递归
#include <cstdio> #include <iostream> using namespace std; long long a[55] = {0,3,6}; lo ...