hive sql实现随机样本的选取

本文介绍了Hive中实现数据抽样的三种主要方法:1) 使用tablesample()函数按比例抽取数据;2) 利用分桶抽样,通过cluster by实现;3) 应用rand()函数进行随机抽样。这些方法在数据采样和实验设计中非常实用。
摘要由CSDN通过智能技术生成

hive实现数据抽样一般有三种方法(参考 http://www.bubuko.com/infodetail-1022686.html ):

1. 数据块抽样 (tablesample()函数)

利用tablesample() 函数, 根据hive表数据的大小按比例抽取数据,并保存到新的hive表中。

例子: 将原hive表10%的数据存到新表,但是select语句不能带where条件且不支持子查询,需要通过建中间表或随机抽样解决。

create table xxx_new as 

select * from xxx tablesample(10 percent)

另外还有tablesample(n M) 指定抽样数据的大小,单位是M; tablesample(n rows) 是每个inputSplit里抽样n行。

 

2. 分桶抽样 (tablesample(bucket x out of y [on colname])

  这个方法算法用的较多,利用关键语句cluster by 实现。hive中分桶其实是根据某一个字段hash取模,放入指定的数据桶中,比如将表table_1按照ID分成100个桶,算法是hash(id)%100, 这样hash(id)%100 =0 的数据被放到一个桶中,hash(id)%100=1的记录放在第二个桶中。 在实际工作中,可以通过分桶,单独将某个尾号(如01,02..)的用户放入实验组,进行实验。

分桶语法样例:

执行下面的语句,创建一个分桶表,并插

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值