《2022年HIVE开发规范 .pdf》由会员分享,可在线阅读,更多相关《2022年HIVE开发规范 .pdf(3页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、Hive 开发规范1. 表建表示例1.1. 命名表名称由字母、数字、下划线组成,不同单词之间用下划线分开采用 “数据层次缩写_数据表名“ 格式命名。数据层次缩写包括(dpods,dpdw,dpmid,dpdm,dprpt)dpods:存放从原系统采集来的原始数据dpdw:保存经过清洗,转换和重新组织的历史数据,数据将保留较长时间,满足系统最细粒度的查询需要.dpmid:模型计算中间结果。减少重复计算,降低事实表访问和计算压力。dpdm:数据集市。基于部门或某一特定分析主题需要dprpt:直接面向用户的报表临时表命名: dpstg_数据表名_YYYYMMDD外部表命名:数据层次缩写_ext_数据
2、表名其它团队表命名:数据层次缩写_团队名缩写_数据表名1.2. 文件格式缺省使用 RCFILE 1.3. 分隔符:Hive 表缺省使用:FIELDS TERMINATED BY 005 COLLECTION ITEMS TERMINATED BY 002 MAP KEYS TERMINATED BY 003 LINES TERMINATED BY n 1.4 空值所有建表语句原则上执行以下语句设置表的空值选项:ALTER TABLE table_name SET SERDEPROPERTIES(serialization.null.format = ); 名师资料总结 - - -精品资料欢迎下
3、载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 3 页 - - - - - - - - - 1.5 其他建表和加载分区时加上 if not exists 删除表时加上 drop table if exists 深刻理解 hive 内部表与外部表的区别,删除表操作时要谨慎。如果是内部表的话,删除内部表会将元数据和真实数据全部删除,且不可恢复。2. Column 2.1. 命名字段:小写字母、数字、下划线组成,不同单词之间用下划线分开分区列:采用 “ hp_字段名” 命名分区列2.2. 字段类型时间: STRIN
4、G , like:yyyy-mm-dd hh:mm:ss 整形: INT, BIGINT 字符串: STRING 浮点: DOUBLE 复杂类型: MAP 、ARRAY 、STRUCT 、UNION 2.3. Partition列Hive Partition 列在 Data 中并不存储,这会导致当以文件形式对外提供数据时,数据会有缺失,为此,我们对所有的Partition 列冗余存储。示例:当以列名为type 的列作为 partition 列时,我们除了保存type 列外,增加一列 hp_type 列做为 partiiton 列。2.4. Bucket列使用 set hive.enforce.
5、bucketing = true 自动控制上一轮reduce 的数量从而适配bucket 的个数2.5. 修改可以修改列数据类型严禁删除列新增列只能加到最后名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 3 页 - - - - - - - - - 3. 视图禁止使用视图!4. 注释表和字段的注释都必须使用comment 语句加以注释。所有字段必须给出准确注释;枚举类型字段必须列举出所有枚举值5. 数据生命周期表注册时,开发需要认真填写生命周期,以便定时清理数据,节约存储。
6、6. 字符集Hadoop 和 Hive 都是用 UTF-8 编码的,所有导入文件的字符必须为UTF-8 格式。7. 小文件合并当一个表存在过多小文件(小于10M )时,不仅会对namenode 造成很大压力,也会降低执行效率,甚至任务无法执行,因此,当发现表出现很多小文件时,请添加如下参数:set hive.mergejob.maponly = true; set hive.merge.mapfiles = true; set hive.merge.mapredfiles = true; set mapred.max.split.size=256000000; set mapred.min.s
7、plit.size.per.node=256000000; set mapred.min.split.size.per.rack=256000000; set hive.merge.size.per.task = 256000000; set hive.merge.smallfiles.avgsize=100000000; set hive.input.format=org.apache.hadoop.hive.ql.io.CombineHiveInputFormat; 各字段具体含义参考架构同学yukang.chen的调研报告:Hive Merge Small Files调研名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 3 页 - - - - - - - - -