Hive|Hive 随机抽样方法(TABLESAMPLE 方法、随机数方法) |
您所在的位置:网站首页 › 随机数字表抽样法 › Hive|Hive 随机抽样方法(TABLESAMPLE 方法、随机数方法) |
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 |