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(