• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
导航菜单
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • windows
  • 服务器硬件
  • 服务器运维
  • 云计算
  • 虚拟化
  • IIS教程
  • Linux
  • Apache
  • Ftp
  • DNS
  • Nginx
您的位置:首页 > 服务器 >云计算 > Hive学习笔记(三),hive学习笔记

Hive学习笔记(三),hive学习笔记

作者:网友 字体:[增加 减小] 来源:互联网

本文主要包含Hive学习笔记(三),hive学习笔记等服务器相关知识,网友希望可以进行参考

Hive学习笔记(三),hive学习笔记


分区和桶:

hive把表组织成分区,这是一种根据分区列的值进行粗略划分的机制。使用分区可以加快数据分片的查询速度。
表或分区可以进一步划分为桶,它会为数据提供额外的数据结构从而获得更高效的查询处理。比如:根据用户ID来划分桶,我们可以在所有用户集合的随机样本上快速计算基于用户的查询。

分区:
分区是在创建表时用PARTITIONED BY子句进行定义。该子句需要定义列的列表。

create table logs(ts String,line String )
PARTITIONED BY(dt String,country String);

数据加载到分区表时,要显示指定分区值

load data local inpath 'input/hive/partitions/file1'
into  table logs 
partition (dt='20150824',country='CN') ;

表后可以使用alter table 来增加和删除分区。

如何知道表中有哪些分区:

show partitions  logs;

在select语句中,以普通方式使用分区列,hive对输入进行裁剪,只扫描相关的分区。

select ts,dt,line from logs   where  country='GB';  

返回dt分区列的值,这个值从目录中读取,因为它们在数据文件中不存在。

桶:
hive如何划分桶?
使用 CLUSTERED BY 子句来划分桶所用的列和要划分桶的个数:

create table b_user (id int ,name String)
CLUSTERED BY (id) into  4 buckets;

桶中的数据根据一个或多个列进行排序,每个桶连接变成了高效的合并排序,提升了map连接的效率:

create table b_user(id int,name string)
CLUSTRED  BY  (id) SORTED BY (id ASC) INTO 4   BUCKETS;

这样hive并不检查数据文件中的桶和表定义中的桶是否一致。两者不一致,只有在查询时才能发现错误和未定义的结果。

要向分桶表中填充成员,需要将hive.enforce.bucketing属性设置为 true,这样hive知道用表定义的数量来创建桶。

insert overwrite  table b_user 
select * from users;

每个桶就是表(或分区)目录里的一个文件,一个作业产生的桶 和reduce 任务个数相同。

可以用TABLESAMPLE子句对表进行取样,这个子句会查询限定在一部分桶内而不是使用整个表。

select * from b_user
TABLESAMPLE(BUCKET 1 out of 4 ON id );

这样的查询会返回一半的桶:

select * from b_user
TABLESAMPLE(BUCKET 1 out of 2 ON id );

取样分桶表是非常高效的操作,查询只需读取和TABLESAMPLE子句匹配的桶 。使用rand()函数对没有划分成桶的表进行取样,即使只需要读取很小一部分样本,也要扫描整个输入数据集。

select  *  from users
TABLESAMPLE (BUCKET 1 out of 4 on rand());

小结:

分区是是对分区列的值进行粗略划分的机制,可以加快查询速度。桶的划分是在表或者分区的基础上,可以提供更高效的查询处理。学习分区和桶的定义,理解它们的机制。

版权声明:本文为博主原创文章,未经博主允许不得转载。

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • Hive学习笔记(三),hive学习笔记

相关文章

  • hadoop1 & hadoop2 fair-schduler 配置和使用,hadoop
  • 详说大数据计算的可类化Classable,类化classable
  • 机器学习--k均值聚类(k-means)算法,--kk-means
  • 有关微软技术方向的最新学习资源【2015-9月】,学习资源2015-9
  • Zookeeper实践之:通过Zookeeper实现一个消费者进程分配程序,zookeeper消费者
  • JS中split用法和数组中元素的删除,jssplit
  • 【Spark】Spark基本概念,spark基本概念
  • hadoop文件损坏解决办法,
  • HDFS概念详解—块,hdfs详解
  • MapReduce排序及实例,MapReduce排序实例

文章分类

  • windows
  • 服务器硬件
  • 服务器运维
  • 云计算
  • 虚拟化
  • IIS教程
  • Linux
  • Apache
  • Ftp
  • DNS
  • Nginx

最近更新的内容

    • hbase遇到问题及解决方法,hbase遇到问题
    • 大数据处理算法一:Bitmap算法,数据处理bitmap算法
    • 《2》CentOS7.0+OpenStack+kvm云平台部署—配置Keystone,centos7.0kvm
    • 机器学习-Python中训练模型的保存和再使用,-python模型
    • 整理得很全面的Nginx学习资源,nginx学习资源
    • Hadoop学习笔记0005——centos下运行Hadoop实例,centoshadoop
    • H3C config vlan access and trunk links,h3ctrunk
    • centos7 安装配置openstack-dashboard (官网openstack-juno版),centos7openstack
    • jsp中用EL读取了数据库里面的时间,怎么设置格式显示的格式,jspel
    • Elasticsearch之Nested Query,elasticsearch

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有