Hive|Hive 随机抽样方法(TABLESAMPLE 方法、随机数方法)

您所在的位置:网站首页 随机数字表抽样法 Hive|Hive 随机抽样方法(TABLESAMPLE 方法、随机数方法)

Hive|Hive 随机抽样方法(TABLESAMPLE 方法、随机数方法)

2024-06-03 07:40| 来源: 网络整理| 查看: 265

TABLESAMPLE 语法

TABLESAMPLE 字句用于从 Hive 中抽取样本数据。有三种具体方式:

TABLESAMPLE(n PERCENT):指定抽取数据在原 Hive 表中的比例,单位为 %TABLESAMPLE(n M):指定抽取数据的大小,单位为 MTABLESAMPLE(n ROWS):指定抽取数据的行数,单位为行 SELECT * FROM s_name.t_name TABLESAMPLE (20 ROWS) WHERE pt = '20240118' AND RAND();

但是,经过以上语句测试,这个语法似乎不是随机抽样,我发现使用 TABLESAMPLE(n ROWS) 获取的 20 行和不加该字句获得的前 20 行相同,怀疑可能就是抽取 HDFS 文件中从前往后获取到满足指定条件的行数。也可能是我的使用方法有问题,如有更优方法欢迎指出。

使用随机数抽样

最简单的随机抽样,就是将所有给所有记录添加一个随机数,然后排序筛选其中最小的目标条数即可。在 Hive 中,对于 ORDER BY ... LIMIT ... 是有优化的,不会出现全量排序导致数据倾斜的问题。

示例:在中间表 total 中随机抽取 1000 条样本数据

WITH total AS ( ... ) SELECT * FROM total ORDER BY rand() LIMIT 1000;


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3