提问人:Leo Jiang 提问时间:6/29/2017 最后编辑:Leo Jiang 更新时间:8/27/2021 访问量:6148
在 Hive 中选择一个随机行作为聚合函数
Choose a random row as aggregate function in Hive
问:
我想按一列分组,然后从另一列中选择随机行。在 Presto 中,有 .arbitrary
例如,我的查询是:
SELECT a, arbitrary(b)
FROM foo
GROUP BY a
如何在 Hive 中执行此操作?
编辑:
我所说的“随机”是指“任意”。它可能每次都只是第一排。
答:
0赞
scarlett_r
8/27/2021
#1
可以使用以下逻辑在 Hive 中获取所需的结果。 向 rand(b) 提供row_number,然后选择所需的任何row_number。每次它都会从 b 列返回一个随机值。
select a, b
from (
select a, b,row_number() over( partition by a order by rand(b) asc) rn from foo
)a
where rn=1
group by a, b;
评论
b
a
b
b
a
b
b
a
arbitrary
可以在特定环境中使用,在这些环境中,其使用可以确定性,或者在处理大数据时不可避免地需要。它不应在产生随机输出的默认设置中使用。再现性是一个重要的特性。