tablesample函数介绍
目录
- 前言:
- 语法:
- 示例
前言:
在 Spark SQL 中,TABLESAMPLE 函数用于从表中抽样数据。这对于大数据集上的快速近似查询非常有用。
语法:
TABLESAMPLE (sample_type [ (percentage) | (num_rows) ]) [REPEATABLE (seed)]
参数说明
sample_type:
BYTELENGTH: 按字节大小抽样(不常用)
PERCENT: 按数据行的百分比抽样(常用)
ROWS: 按行数抽样(常用)
BUCKET x OUT OF y: 基于哈希分桶抽样(特定用途)
抽样量:
对于PERCENT: 指定百分比(例如 10 表示 10%)
对于ROWS: 指定行数(例如 1000 表示抽取1000行)
对于BUCKET: 指定分桶策略(如 BUCKET 1 OUT OF 10 表示分成10桶取第1桶)
REPEATABLE:
可选参数,指定随机种子以确保每次抽样结果相同
示例
示例1:按百分比抽样
-- 抽取10%的数据
SELECT * FROM sales TABLESAMPLE (10 PERCENT);
示例2:按行数抽样
-- 抽取1000行数据
SELECT * FROM large_table TABLESAMPLE (1000 ROWS);
示例3:分桶抽样(伪随机)
-- 将数据分为10桶,抽取第1桶(约10%数据)
SELECT * FROM users TABLESAMPLE (BUCKET 1 OUT OF 10);
示例4:可重复抽样
-- 使用种子42,确保每次运行结果相同
SELECT * FROM logs TABLESAMPLE (5 PERCENT) REPEATABLE (42);