使用Hive随机抽样

rand() 函数

 生成一个0-1之间的随机数,可设定随机种子。

利用这个函数在hive 中进行随机抽样。

test1  简单随机抽样

SELECT t.varx,t.a
FROM(    
    SELECT varx,rand() a
    FROM tablename)t
WHERE t.a BETWEEN 0 AND 0.2

这样就抽取了五分之一的数据。

--或者像这样随机抽取100条数据,与limit结合使用

SELECT distinct a.*
FROM table a
ORDER BY rand(222)
limit 100

test2  数据块取样(Block Sampling)

关键字 TABLESAMPLE

SELECT * FROM table1 TABLESAMPLE (30M)

SELECT * FROM table1 TABLESAMPLE (15 PERCENT)

SELECT COUNT(1) FROM (SELECT * FROM lxw1 TABLESAMPLE (200 ROWS)) x --不懂
SELECT COUTN(2) FROM table1 TABLESAMPLE (BUCKET 1 OUT OF 20 ON RAND()) -- 分桶20抽取第2桶

test3  系统抽样

mod,rand() 依照userrid取模,分5组,每组随机抽取100个用户,实现如:

select *  
  from(  
 
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值