1-1 分桶采样
-
当表的数据量比较庞大的时候, 在编写SQL语句后, 需要首先测试 SQL是否可以正常的执行, 需要在表中执
行查询操作, 由于表数据量比较庞大, 在测试一条SQL的时候整个运行的时间比较久, 为了提升测试效率, 可以整个表
抽样出一部分的数据, 进行测试
-
校验数据的可行性(质量校验)
-
进行统计分析的时候, 并不需要统计出具体的指标, 可能统计的都是一些相对性指标, 比如说一些比率(合
格率)问题, 此时可以通过采样处理
tablesample ( bucket x out of y [on column|rand()])
分桶采样
use itcast; create table tb_test( id int, name string ) row format delimited fields terminated by ','; insert into tb_test values (1,'张三'), (2,'李四'), (3,'沙和尚'), (4,'唐僧'), (5,'孙悟空'), (6,'猪八戒'); -- 分桶表 create table tb_test_buckets( id int, name string )clustered by(id) into 6 buckets row format delimited fields terminated by ','; insert into tb_test_buckets values (1,'张三'), (2,'李四'), (3,'沙和尚'), (4,'唐僧'), (5,'孙悟空'), (6,'猪八戒');
分桶表
取值数量 = 分桶数/y值
x值决定从哪个分桶文件开始取值
未分桶表
1-按字段分桶 hash(字段)%y值=余数 相同余数放在一起
2-按照x值找余数对应的值 x=1 就找第一个余数 0 x=2 找第二个余数 1 x=3 找第三个余数 2
1-2 Join优化
在表关联时,因为关联字段的原因