一步一个脚印,一天一道面试题
-
数据分区和分桶:合适的分区和分桶能减少数据量的输入
-
合适的数据格式:Parquet,ORC 是可以减少 I/O ,网络传输速率等的
-
列裁剪:一般不要使用 SELECT *,只获取真正需要的列
-
文件合并 :使用
INSERT OVERWRITE
可以减少小文件数量,提高效率 -
数据过滤 :使用
WHERE
过滤,简单却有效 -
并行度设置:合理的并行度设置可以更好的利用集群性能,否则可能会"有力使不出"或"杀鸡用牛刀"的情况
-
数据本地化和 JOIN 化:尽量在本地节点做更多的操作,减少网络传输等开销,比如使用 mapjoin;
-
定期收集统计信息 :
ANALYZE TABLE
收集表的信息,可以让优化器更可能做出更好的查询计划;