抽样
抽样在Hive 中也是比较常用的一种手段,主要用在下面的几个场景中
- 一些机器学习的场景中,数仓作为数据的提供方提供样本数据
- 数据的计算结果异常或者是指标异常,这个时候如果我们往往需要确认数据源的数据是否本身就有异常
- SQL的性能有问题的时候我们也会使用抽样的方法区查看数据,然后进行SQL调优
- 在大规模数据量的数据分析及建模任务中,往往针对全量数据进行挖掘分析时会十分耗时和占用集群资源,因此一般情况下只需要抽取一小部分数据进行分析及建模操作。
随机抽样(rand()函数)
我们一般情况下是使用排序函数和rand() 函数来完成随机抽样,limit关键字限制抽样返回的数据,不同之处再有我们使用哪个排序函数呢
利用 rand() 函数进行抽取,这是因为rand() 返回一个0到1之间double 类型的随机值。
下面我们用到了前面我们使用过的一张表大概4603089 条记录,这里我就不给大家准备数据了,大家可以看Hive进阶之数据存储格式来获取测试数据
create table ods_user_bucket_log(
id int,
name string,
city string,
phone string,
acctime string)
CLUSTERED BY (`id` ) INTO 5 BUCKETS