版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Hive开发规范、最佳实践Hive开发规范、最佳实践1制定规范的目的低沟通成本安全易维护高效开发减少“回锅”跳过已知的“坑”制定规范的目的低沟通成本2制定规范需要避免增加管理成本增加不必要的流程影响开发效率形式主义。。。。制定规范需要避免增加管理成本3好规范还是坏规范?好规范的标准:
简单清晰易遵循好规范还是坏规范?好规范的标准: 4Hive应用现状已经上线的项目UBT数据进hiveABTestOrderSearch。。。后续项目UBT横向业绩Mysql汇总表切hiveV1.0Hive应用现状已经上线的项目5Hive应用现状涉及到的组DataInfrastructure基础分析服务组酒店组Hive应用现状涉及到的组6Hive应用现状项目开发领先于规范制定摸石头过河的过程不断提炼、完善规范的过程Hive应用现状项目开发领先于规范制定7规范项目开发流程命名规范数据库、表、视图用户规范规范项目开发流程8项目开发流程创建Git项目设计数据库、表结构开发需要的HiveSQL、Shell脚本数据导入Hive(可选)项目开发流程创建Git项目9项目开发流程在开发Hadoop集群上开发、测试审核规范性能测试在生产环境部署项目开发流程在开发Hadoop集群上开发、测试10项目开发流程---
GitGit
公司统一的版本管理工具推荐使用的客户端
msysgitGit+TortoiseGit项目开发流程---GitGit 公司统一的版本管理工11项目开发流程---
GitGit
公司统一的版本管理工具角色:Master 全部权限Developer 读、写、Reporter 读、cloneGuest 读
项目开发流程---GitGit 公司统一的版本管理工12项目开发流程---
数据库设计设计数据库、表结构根据业务需求,设计非结构化的表结构是否需要分区只初始化一次避免在SQL中创建数据库建表drop表项目开发流程---数据库设计设计数据库、表结构13项目开发流程---
开发HiveSQL开发HiveSQL使用Shell封装SQL项目开发流程---开发HiveSQL开发HiveS14项目开发流程–数据导入需要从外部数据源导入数据几种模式:用SQOOP从数据库导入到HiveHbase提供的RCFile,直接创建为外部表CSV/TSV文件上传到HDFS,创建外部表kettle项目开发流程–数据导入需要从外部数据源导入数据15项目开发流程–开发在开发Hadoop集群上开发、测试Job是否需要多日重跑?对应数据是否需要修复?配置信息单独维护目录结构与生产环境一致目录结构与Git项目的目录结构一致Windows上的文件上传至linux机器上:Dos2unix避免\r的问题项目开发流程–开发在开发Hadoop集群上开发、测试16项目开发流程–审核审核规范交叉检查每个小组内设置专门的对口人项目开发流程–审核审核规范17项目开发流程性能测试判断需要处理的数据量超过20分钟的脚本,需要检查整个job的运行时间项目开发流程性能测试18项目开发流程–部署在生产环境部署每个小组专门对口人负责申请数据库App账户修改配置信息:HDFS集群信息数据库配置更新ReleaseNotes到Confluence监控job运行项目开发流程–部署在生产环境部署19项目开发流程–部署存在的问题:开发环境集群计算能力不足熟悉过程项目开发流程–部署存在的问题:20数据库层SourceDWTmpDIMOLAPReportTmpquery数据库层SourceDWTmpDIMOLAPReportTm21每层内按照业务线切分SourceDWDimensionOLAPReportDim_UBTDim_AbTestDim_HotelUBTAbTestHotelUBTAbTestHotelUBTAbTestHotelUBTAbTestHotel每层内按照业务线切分SourceDWDimensionOLA22数据库命名规范总体原则:数据库名以DB结尾采取首字母大写用下划线_风格的拼写规范专门的临时库用于中间表
数据库命名规范总体原则:23数据库命名规范数据库层库名Report工作层Htl_TmpDBReport层Report_HtlDBOLAP工作层Htl_TmpDBOLAP层OLAP_HtlDBDW工作层Htl_TmpDBDW层DW_HtlDBSource层Source_HtlDBDimenstion层Dim_UbtDBQuery&analysis层Tmp_UbtQueryDB数据库命名规范数据库层库名Report工作层Htl_TmpD24表命名规范
Source层基本原则:
与源表名一致缺陷:
会有多种风格的表名存在
Dimension层表名必须以Dim为前缀其他层首字母大写、不用下划线的驼峰命名规范事实表以Fact为前缀表命名规范
Source层25表命名规范实例Fact_UBT_Order_OnlineXFactUBTOrderOnline
√ubt_dim上的维表
Platform
X维表DimPlatform
√表命名规范实例Fact_UBT_Order_Online26列命名规范Source层,保持原有列名不变其他层首字母大写、其余字母小写、不用下划线的驼峰风格避免使用关键字实在不能避免,使用`转义
例如`From`列命名规范Source层,保持原有列名不变27最佳实践总体原则:不同角色,不同开发工具与时间相关的表,按照时间做分区支持多日的job同时运行,互不影响良好、可维护的目录结构最佳实践总体原则:28最佳实践—角色两大类:ETL分析师最佳实践—角色两大类:29最佳实践—角色ETL自动运行Hive上ETLJob推荐使用环境:SSH客户端(SecureSSHClient)Hive命令行客户端Shell脚本内部调用Hive–fsqlFile.sql权限:业务线内部数据库,写权限业务线外数据库,读权限最佳实践—角色ETL30最佳实践—角色ETL账户列表bihtl 酒店组bipkg 度假组biflt 机票组bipub 公共组bitrain 无线/新业务组bicorp 商旅组bianalysis 基础分析服务组bimob 无线/新业务组最佳实践—角色ETL账户列表31最佳实践—角色Hive自定义配置UDF自动加载 .hiverc最佳实践—角色Hive自定义配置32最佳实践—角色分析师AdHocJob推荐使用环境:SquirrelGUI界面查询权限:业务数据库,读权限个人临时库,写权限最佳实践—角色分析师33最佳实践—多日job支持多日job并发运行,要求:所有中间表都是分区表预先创建好TmpDB以及对应的Tmp表采用INSERTOVERWRITETABLEttt
PARTITION(d=‘YYYY-MM-DD’)DML语句覆盖旧数据最佳实践—多日job支持多日job并发运行,要求:34最佳实践—ETLJob开发小的Git项目管理代码、脚本目录结构与运行环境完全一致专门的建库、建表脚本剥离与环境相关的配置文件在开发环境上完成开发用crontab部署试运行最佳实践—ETLJob开发小的Git项目35最佳实践—ETLJob开发实例Git项目目录结构bin shell脚本data 数据文件lib 放置jar包etc配置文件schema建库、建表语句scripthive脚本logs日志文件最佳实践—ETLJob开发实例Git项目目录结构36最佳实践—ETLJob开发实例部署到/home/bianalyais/abTestbin shell脚本data 数据文件etc配置文件schema建库、建表语句scripthive脚本logs日志文件最佳实践—ETLJob开发实例部署到/home/biana37最佳实践—ETLJob开发实例文件后缀名规范shell脚本 .sh配置文件 .properties建库、建表语句 .sqlhive脚本 .sql日志文件 .log最佳实践—ETLJob开发实例文件后缀名规范38最佳实践—ETLJob开发实例shell脚本使用BASH解释执行#!/bin/bash智能判断当前目录curDir=$(cd`dirname$0`;pwd)cd$curDir判断参数格式内部使用相对目录内部不包含配置信息最佳实践—ETLJob开发实例shell脚本39最佳实践—ETLJob开发实例shell脚本实例:#!/bin/bashcurDir=$(cd`dirname$0`;pwd)cd$curDirsourcecommon.shproperties="../etc/perties"hiveDb=${hive_source_abtestdb}sourceDb=${mysql_abtestdb}./commonFullTable.sh$properties$hiveDbexperiment$sourceDbexperiment最佳实践—ETLJob开发实例shell脚本实例:40最佳实践—ETLJob开发实例配置文件内容:数据库用户数据库密码数据库驱动数据库jdbcurl最佳实践—ETLJob开发实例配置文件内容:41最佳实践—ETLJob开发实例配置文件实例:perties#!/bin/bashuser=''password=''driver='com.microsoft.sqlserver.jdbc.SQLServerDriver'dbUrl='jdbc:sqlserver://7:28747;databaseName='最佳实践—ETLJob开发实例配置文件实例:42最佳实践-建库建库语句指定locationcreatedatabaseifnotexistsDW_AdServerDBlocation'${location}/DW_AdServerDB.db';建表时,按照字符类型的日期分区PARTITIONEDBY(dstring);格式为YYYY-MM-DD例如:2013-07-23最佳实践-建库建库语句43Hive开发规范、最佳实践Hive开发规范、最佳实践44制定规范的目的低沟通成本安全易维护高效开发减少“回锅”跳过已知的“坑”制定规范的目的低沟通成本45制定规范需要避免增加管理成本增加不必要的流程影响开发效率形式主义。。。。制定规范需要避免增加管理成本46好规范还是坏规范?好规范的标准:
简单清晰易遵循好规范还是坏规范?好规范的标准: 47Hive应用现状已经上线的项目UBT数据进hiveABTestOrderSearch。。。后续项目UBT横向业绩Mysql汇总表切hiveV1.0Hive应用现状已经上线的项目48Hive应用现状涉及到的组DataInfrastructure基础分析服务组酒店组Hive应用现状涉及到的组49Hive应用现状项目开发领先于规范制定摸石头过河的过程不断提炼、完善规范的过程Hive应用现状项目开发领先于规范制定50规范项目开发流程命名规范数据库、表、视图用户规范规范项目开发流程51项目开发流程创建Git项目设计数据库、表结构开发需要的HiveSQL、Shell脚本数据导入Hive(可选)项目开发流程创建Git项目52项目开发流程在开发Hadoop集群上开发、测试审核规范性能测试在生产环境部署项目开发流程在开发Hadoop集群上开发、测试53项目开发流程---
GitGit
公司统一的版本管理工具推荐使用的客户端
msysgitGit+TortoiseGit项目开发流程---GitGit 公司统一的版本管理工54项目开发流程---
GitGit
公司统一的版本管理工具角色:Master 全部权限Developer 读、写、Reporter 读、cloneGuest 读
项目开发流程---GitGit 公司统一的版本管理工55项目开发流程---
数据库设计设计数据库、表结构根据业务需求,设计非结构化的表结构是否需要分区只初始化一次避免在SQL中创建数据库建表drop表项目开发流程---数据库设计设计数据库、表结构56项目开发流程---
开发HiveSQL开发HiveSQL使用Shell封装SQL项目开发流程---开发HiveSQL开发HiveS57项目开发流程–数据导入需要从外部数据源导入数据几种模式:用SQOOP从数据库导入到HiveHbase提供的RCFile,直接创建为外部表CSV/TSV文件上传到HDFS,创建外部表kettle项目开发流程–数据导入需要从外部数据源导入数据58项目开发流程–开发在开发Hadoop集群上开发、测试Job是否需要多日重跑?对应数据是否需要修复?配置信息单独维护目录结构与生产环境一致目录结构与Git项目的目录结构一致Windows上的文件上传至linux机器上:Dos2unix避免\r的问题项目开发流程–开发在开发Hadoop集群上开发、测试59项目开发流程–审核审核规范交叉检查每个小组内设置专门的对口人项目开发流程–审核审核规范60项目开发流程性能测试判断需要处理的数据量超过20分钟的脚本,需要检查整个job的运行时间项目开发流程性能测试61项目开发流程–部署在生产环境部署每个小组专门对口人负责申请数据库App账户修改配置信息:HDFS集群信息数据库配置更新ReleaseNotes到Confluence监控job运行项目开发流程–部署在生产环境部署62项目开发流程–部署存在的问题:开发环境集群计算能力不足熟悉过程项目开发流程–部署存在的问题:63数据库层SourceDWTmpDIMOLAPReportTmpquery数据库层SourceDWTmpDIMOLAPReportTm64每层内按照业务线切分SourceDWDimensionOLAPReportDim_UBTDim_AbTestDim_HotelUBTAbTestHotelUBTAbTestHotelUBTAbTestHotelUBTAbTestHotel每层内按照业务线切分SourceDWDimensionOLA65数据库命名规范总体原则:数据库名以DB结尾采取首字母大写用下划线_风格的拼写规范专门的临时库用于中间表
数据库命名规范总体原则:66数据库命名规范数据库层库名Report工作层Htl_TmpDBReport层Report_HtlDBOLAP工作层Htl_TmpDBOLAP层OLAP_HtlDBDW工作层Htl_TmpDBDW层DW_HtlDBSource层Source_HtlDBDimenstion层Dim_UbtDBQuery&analysis层Tmp_UbtQueryDB数据库命名规范数据库层库名Report工作层Htl_TmpD67表命名规范
Source层基本原则:
与源表名一致缺陷:
会有多种风格的表名存在
Dimension层表名必须以Dim为前缀其他层首字母大写、不用下划线的驼峰命名规范事实表以Fact为前缀表命名规范
Source层68表命名规范实例Fact_UBT_Order_OnlineXFactUBTOrderOnline
√ubt_dim上的维表
Platform
X维表DimPlatform
√表命名规范实例Fact_UBT_Order_Online69列命名规范Source层,保持原有列名不变其他层首字母大写、其余字母小写、不用下划线的驼峰风格避免使用关键字实在不能避免,使用`转义
例如`From`列命名规范Source层,保持原有列名不变70最佳实践总体原则:不同角色,不同开发工具与时间相关的表,按照时间做分区支持多日的job同时运行,互不影响良好、可维护的目录结构最佳实践总体原则:71最佳实践—角色两大类:ETL分析师最佳实践—角色两大类:72最佳实践—角色ETL自动运行Hive上ETLJob推荐使用环境:SSH客户端(SecureSSHClient)Hive命令行客户端Shell脚本内部调用Hive–fsqlFile.sql权限:业务线内部数据库,写权限业务线外数据库,读权限最佳实践—角色ETL73最佳实践—角色ETL账户列表bihtl 酒店组bipkg 度假组biflt 机票组bipub 公共组bitrain 无线/新业务组bicorp 商旅组bianalysis 基础分析服务组bimob 无线/新业务组最佳实践—角色ETL账户列表74最佳实践—角色Hive自定义配置UDF自动加载 .hiverc最佳实践—角色Hive自定义配置75最佳实践—角色分析师AdHocJob推荐使用环境:SquirrelGUI界面查询权限:业务数据库,读权限个人临时库,写权限最佳实践—角色分析师76最佳实践—多日job支持多日job并发运行,要求:所有中间表都是分区表预先创建好TmpDB以及对应的Tmp表采用INSERTOVERWRITETABLEttt
PARTITION(d=‘YYYY-MM-DD’)DML语句覆盖旧数据最佳实践—多日job支持多日job并发运行,要求:77最佳实践—ETLJob开发小的Git项目管理代码、脚本目录结构与运行环境完全一致专门的建库、建表脚本剥离与环境相关的配置文件在开发环境上完成开发用crontab部署试运行最佳实践—ETLJob开发小的Git项目78最佳实践—ETLJob开发实例Git项目目录结构bin shell脚本data 数据文件lib 放置jar包etc配置文件schema建库、建表语句scripthive脚本logs日志文件最佳实践—ETLJob开发实例Git项目目录结构79最佳实践—ETLJob开发实例部署到/home/bianalyais/abTestbin shell脚本data 数据文件etc配置文件schema建库、建表语句scripthive脚本logs日志文件最佳实践—ETLJob开发实例部署到/home/biana80最佳实践—ETLJob开发实例文件后缀名规范shell脚本 .sh配置文件 .properties建库、建表语句 .sqlhive脚本 .sql日
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年西安市雁塔区第一小学教师招聘备考题库带答案详解
- 初中生物概念建构中的多媒体资源运用与教学策略教学研究课题报告
- 2025年保定市宽高高级中学招聘备考题库及答案详解1套
- 2型糖尿病个体化治疗药物转换策略
- 国网浙江电力2026年度高校毕业生招聘1170人备考题库及一套参考答案详解
- 2025年大连海事大学公开招聘事业编制非教学科研人员23人(第一批)备考题库含答案详解
- 2025年河南实达国际人力资源合作有限公司招聘宋城产投劳务派遣人员备考题库有答案详解
- 2025年连山教师招聘29人备考题库完整参考答案详解
- 2025年上海大学诚聘法学院院长备考题库及答案详解参考
- 简约插画风深色年度晚会庆典
- 2025年榆林市住房公积金管理中心招聘(19人)备考笔试试题及答案解析
- 2025年金属非金属矿山(地下矿山)安全管理人员证考试题库含答案
- 2025秋苏教版(新教材)小学科学三年级上册知识点及期末测试卷及答案
- 2025年及未来5年中国非晶合金变压器市场深度分析及投资战略咨询报告
- 中文核心期刊论文模板(含基本格式和内容要求)
- 2024-2025学年云南省普通高中高二下学期期末学业水平合格性考试数学试卷
- GB/T 18213-2025低频电缆和电线无镀层和有镀层铜导体直流电阻计算导则
- 泰康人寿会计笔试题及答案
- 园林绿化养护项目投标书范本
- 烷基化装置操作工安全培训模拟考核试卷含答案
- 汽车租赁行业组织架构及岗位职责
评论
0/150
提交评论