Hive程序相关规范

一、开发规范

1.单条SQL长度不宜超过一屏
2.SQL子查询嵌套不宜超过3层
3.少用或者不用hint
4.若有多处逻辑一致的代码,可以将执行结果存储到临时表中
5.尽可能使用SQL自带高级命令做操作,例如:在多维统计分析中使用cube,grouping sets 和rollup等命令去代替多个SQL子句的union all
6.使用set属性,进行配置命令的更改,要有注释;
7.代码里不允许包含对表/分区/列的DDL语句,出了新增和删除分区。
Hive SQL更加适合处理多条数据组合的数据集,不适合处理单条数据,且单条数据之间存在顺序依赖等逻辑关系。例如,有A,B,C3行数据,当A符合某种条件才能处理B行时,只有A,B符合某种条件,才能处理C
8.保持一个查询语句所处理的表类型单一。例如,一个SQL语句中的表都是ORC类型的表,或者都是parquet表
9.关注null值的数据处理
10存在多层嵌套,内层嵌套表的过滤条件不要写到外层。

例如
select a.* from a
left join b
where a.no=1;

应该写为
select a.* from (
select * from a where a.no=1
) a left join b 
on a.id=b.id

二、设计规范

1.表结构要有注释
2.列等属性字段要有注释
3.尽量不使用索引
4.创建内部表(托管表)不允许指定数据存储路径,一般由集群的管理人员统一规划一个目录并固化在配置中,使用人员需要使用默认的路径即可。
5.Hive适合处理宽边(列数多的表),适当的冗余有助于Hive的处理性能
6.表的文件块大小要与HDFS的数据块大小大致相等
7.分区表分桶表的使用

三、命名规范

库/表/字段命名要自成一套体系
1.表以tb_开头
2.临时表以tmp_开头
3.视图以v_开头
4.自定义函数以udf_开头
5.原始数据所在的库以db_org_开头,明细数据所在库以db_detail_开头,数据仓库以db_dw_开头。

你可能感兴趣的:(Hive)