7. 排序、限制与抽样

7.1 排序与数据分发

对比项 ORDER BY SORT BY DISTRIBUTE BY CLUSTER BY
核心作用 全局排序 每个 Reducer 内部局部排序 控制数据分发,类似分区 同一列上的 DISTRIBUTE BY + SORT BY,默认升序
Reducer 数量 强制 1 个 多个 多个 多个
输出有序性 单个文件,全局有序 多个文件,文件内有序,文件间无序 只保证相同键进入同一 Reducer,不保证顺序 多个文件,每个文件内部按分发列升序
是否全局有序
典型场景 最终报表、Top N、必须全局有序的小结果集 相同 a 进入同一 Reducer 后,再按 b 排序 相同 a 进入同一 Reducer 相同 a 进入同一 Reducer,内部按 a 升序

7.2 限制行数

SELECT *
FROM employees
LIMIT 10;

LIMIT n 返回前 n 行。

7.3 类型转换

SELECT CAST(value AS INT)
FROM source_table;

使用 CAST(value AS type) 进行类型转换。无法转换的值通常得到 NULL

7.4 抽样查询

SELECT *
FROM source_table
TABLESAMPLE(BUCKET 1 OUT OF 4 ON user_id);

课件给出的抽样语法为 TABLESAMPLE(BUCKET x OUT OF y ON 列名)