我有一个庞大的数据集,其中包含数百万用户的信息以及他们 1 年的购买记录。有没有办法从这些数据中创建 100K 用户的随机样本(保留他们所有的个人购买)?由于一个用户可以进行多次购买,因此样本将包含超过 10 万条记录。
我能够找到 rand()
函数,但它没有为我提供用户的所有记录。
我试过这个查询:
select *
from mytable
where rand()< 0.025 and mydate between '20140101' and '20141231'
distribute by rand()
sort by rand()
limit 100000
此结果仅生成 10 万个随机记录,而不是这 10 万个用户的所有记录。
关于如何编写配置单元查询以获得此结果有什么建议吗?
最佳答案
您应该首先创建包含 100,000 个随机用户 ID 的表:
CREATE table Random_Users AS
Select * From (Select distinct userId From my table) users
where rand()< 0.025 limit 100000;
然后你可以做
Select mytable.* From mytable m JOIN random_users r ON (m.userId = r.userId);
关于hadoop - 如何在 hive 中获取 100K 用户的随机样本及其所有交易?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31989670/