random – 对于庞大的数据库,从Impala中采样的最佳查询是什么?

我在Impala有一张巨大的桌子(超过10亿行).我需要多次采样~100,000行.查询样本行的最佳方法是什么? 最佳答案 正如Jeff所提到的那样,你所要求的确切是不可能的,但我们确实有一个内部聚合函数,它需要200,000个样本(使用储层采样)并返回样本,以逗号分隔为单行.目前还没有办法改变样本数量.如果行数少于200,000,则将返回所有行.如果您对其工作原理感兴趣,请参阅
implementation of the aggregate function and reservoir sampling structures.

目前还没有办法“分裂”或爆炸结果,所以我不知道这会有多大帮助.

例如,从具有8行的表中简单地进行采样:

> select sample(id) from functional.alltypestiny
+------------------------+
| sample(id)             |
+------------------------+
| 0, 1, 2, 3, 4, 5, 6, 7 |
+------------------------+
Fetched 1 row(s) in 4.05s

(对于上下文:这是在过去的版本中添加的,以支持规划器中的直方图统计,但遗憾的是还没有准备好.)

点赞