Hive那些事儿之开篇-开发规范参考

Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。 其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。

笔者在平时开发过程中总结了些规范,供大家参考:

Hive分为内部表和外部表,当删除一个内部表时,相应的数据也会被删除。视数据重要程度而言,选择外部表或内部表。
2. 数据库分为dm,dwd,mid,dim,建表时应将根据表类型建立在对应数据库中,并将表名加上对应前缀dm_,dw_,mid_,dim_。临时表以tmp_,结果表以res_,事实表以dw_fact_作为前缀。

3.表名称由字母、数字、下划线组成,不同单词之间用下划线分开,库名表名都是用名词,不使用动词,能见名知意

  1. 必须有字段注释和表注释。

  2. 为保持兼容性,应尽量少使用arrays, maps,structs,union等复合类型。

6.表的location关键字对应hdfs目录中不能有特殊字符(只能包含字母、数字、=、-);

7.日期类型字段由于格式多样,造成在信息加工处理过程中的格式转换复杂且易出错,因此对日期类型字段统一制定如下格式"yyyy-MM-dd"。时间类型格式为"yyyy-MM-dd hh:mm:ss",或用时间戳存储。

hive与mysql对比
8.以日期为分区时采用yyyy-MM-dd格式,若要细化到小时分区,则另加一个小时分区字段。

9.支持多日job并发运行,要求所有中间表都是分区表,并采用insert overwrite 语句覆盖旧数据。

10.尽量减少使用textfile,尽量用parquet,orc,avro等支持列式查询的压缩格式做为表的存储格式,store as parquet,而底层表无需导出到mysql的的,禁止使用textfile。一律使用压缩格式。

11.分隔符FIELDS TERMINATED 尽量减少使用 \t ,避免特殊字符错位,最好使用\u0001。 COLLECTION ITEMS TERMINATED BY ‘,’ MAP KEYS TERMINATED BY ‘:’ LINES TERMINATED BY ‘\n’

12.禁止使用视图

13.hadoop和hive都是用UTF-8编码的,所有导入文件字符必须是UTF-8格式

14.可以修改列数据类型,严禁删除列,新增列只能加到最后列

15.hive分区列在数据文件中并不存储,会导致以文件形式对外提供数据时,数据会有缺失,为此,需要为所有的分区增加数据列冗余存储。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值