hive分桶

创建分桶表

    建表时指定了CLUSTERED BY,这个表称为分桶表!
	分桶:  和MR中分区是一个概念! 把数据分散到多个文件中!
	
		create table stu_buck(id int, name string)
		clustered by(id) 
		SORTED BY (id desc)
		into 4 buckets
		row format delimited fields terminated by '\t';

导入数据

创建临时表:

	create table stu_buck_tmp(id int, name string)
	row format delimited fields terminated by '\t';

向临时表导入数据

	 load data local inpath '/home/atguigu/hivedatas/student' into table  stu_buck_tmp;

导入数据之前:
需要打开强制分桶开关: set hive.enforce.bucketing=true;
需要打开强制排序开关: set hive.enforce.sorting=true;
导数据:

 insert into table stu_buck select * from stu_buck_tmp;

在这里插入图片描述

抽样查询

格式:select * from 分桶表 tablesample(bucket x out of y on 分桶表分桶字段);
要求:
①抽样查询的表必须是分桶表!
②bucket x out of y on 分桶表分桶字段
假设当前表一共分了z个桶
x: 从当前表的第几桶开始抽样
0<x<=y
y: z/y 代表一共抽多少桶!
要求y必须是z的因子或倍数!

怎么抽: 从第x桶开始抽样,每间隔y桶抽一桶,知道抽满 z/y桶

bucket 1 out of 2 on id:  从第1桶(0号桶)开始抽,抽第x+y*(n-1),一共抽2桶   : 0号桶,2号桶

select * from stu_buck tablesample(bucket 1 out of 2 on id)

bucket 1 out of 1 on id:  从第1桶(0号桶)开始抽,抽第x+y*(n-1),一共抽4桶   : 0号桶,2号桶,1号桶,3号桶

bucket 2 out of 4 on id:  从第2桶(1号桶)开始抽,一共抽1桶   : 1号桶

bucket 2 out of 8 on id:  从第2桶(1号桶)开始抽,一共抽0.5桶   : 1号桶的一半

在这里插入图片描述

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值