在Hive中从分组依据中选择单个随机样本

时间:2019-04-01 20:38:58

标签: random hive group-by

我有一个看起来像这样的表:

Name      Age       Num_Hobbies     Num Shoes
Jane      31        10              2
Bob       23        3               4
Jane      60        2               200
Jane      31        100             6
Bob       10        8               7
etc etc

我想将此表按名称和年龄分组,并从其余各列中随机选择一行。

在熊猫中,我将执行以下操作:

df.groupby(['Name', 'Age']).apply(lambda x: x.sample(n=1))

在蜂巢中,我知道如何创建组,但不知道如何从组中选择一个随机样本。

我在堆栈溢出时看到了这个问题:How to sample for each group in hive?

但是,我不明白如何应用动态分区或Hive存储桶从组中选择单个样本。

1 个答案:

答案 0 :(得分:0)

您可以将rank()row_number()rand()一起使用

select * from 
(
       select name,age,rank() (partition by name,age order by rand()) as rank
       from table         
) t 
where rank = 1