Hive开发规范、最佳实践
hive sql物理执行计划和逻辑执行计划的优化规则

hive sql物理执行计划和逻辑执行计划的优化规则Hive是一个基于Hadoop的数据仓库解决方案,它提供了类似于SQL查询的方式来处理存储在Hadoop集群中的大规模数据。
Hive SQL 的执行计划是将SQL查询转换为一系列物理操作的详细计划。
这个计划决定了数据在集群上的处理方式,包括数据的读取、过滤、聚合等操作。
在Hive中,有两种类型的执行计划:逻辑执行计划和物理执行计划。
逻辑执行计划是指将SQL查询转换为一系列逻辑操作的计划。
它描述了查询的逻辑结构和操作顺序,而不考虑物理存储和执行方式。
逻辑执行计划是Hive优化器的输入,它负责将逻辑执行计划转换为物理执行计划。
逻辑执行计划的优化规则是为了改进查询性能而对逻辑计划进行的一系列优化。
以下是一些常见的逻辑执行计划优化规则:1.谓词下推(Predicate Pushdown):将过滤操作在数据源上推。
这样可以尽早地过滤掉不满足查询条件的数据,减少数据的传输和处理开销。
2.列剪裁(Column Pruning):仅选择查询结果中需要的列,减少数据的传输和处理开销。
这可以通过在逻辑执行计划中删除不需要的投影操作来实现。
3.合并相邻的操作(Merger Adjacent Operations):将相邻的相同操作合并为一个操作,减少操作的数量和数据的传输开销。
例如,将多个相邻的投影操作合并为一个投影操作。
4.等值连接优化(Equi-Join Optimization):如果连接操作中使用了等值连接条件,可以优化连接的顺序和方式。
例如,将连接操作转换为MapJoin操作,通过加载连接表到内存中来加速查询。
5.子查询优化(Subquery Optimization):优化子查询的执行方式,将复杂的子查询转换为更简单的查询,提高查询性能。
物理执行计划是指将逻辑执行计划转换为一系列具体的物理操作的计划。
物理执行计划考虑了数据的存储方式、数据分布和计算资源等因素,以选择最优的编码、存储和执行方式来处理查询。
移动互联网应用程序开发规范及最佳实践

移动互联网应用程序开发规范及最佳实践随着移动互联网的快速发展,各种应用程序层出不穷,这些应用程序不仅对我们的日常生活产生了积极影响,也为我们带来了一定的烦恼。
许多应用程序存在较为明显的问题,例如用户体验不佳、可扩展性差等。
这些问题的背后往往是开发过程中缺乏规范和最佳实践的原因。
本文旨在探讨移动互联网应用程序开发规范及最佳实践,为开发者提供一些指导性的意见,帮助他们开发出高质量的应用程序。
一、代码规范代码规范是保证应用程序质量的基础。
在开发过程中,应该遵循一定的代码规范,使代码易于维护和扩展。
代码规范主要包括命名规范、缩进规范、注释规范等。
下面是一些代码规范的建议:1. 命名规范变量、函数、类名等应该使用有意义的名字,方便阅读和理解。
避免使用简写和缩写。
例如,变量名应该采用小驼峰式命名法(例如:userName),函数名应该采用动词加名词的形式(例如:getUserInfo)。
2. 缩进规范代码应该进行适当的缩进,以提高可读性和可维护性。
建议缩进采用四个空格,避免使用制表符。
3. 注释规范注释应该使用简洁、明确的语言描述代码的作用和实现方式。
函数应该有适当的注释说明函数的参数、返回值和功能。
二、应用程序架构设计应用程序的架构设计是保证可扩展性、可维护性和可读性的重要手段。
应用程序的架构应该简单、清晰、可拓展。
下面介绍一些常用的架构设计模式:1. MVC架构MVC是一种分离数据、用户界面和控制逻辑的软件架构设计模式。
在MVC架构设计下,模型(Model)用于封装与应用程序相关的数据和行为;视图(View)为用户提供直接的用户界面;控制器(Controller)处理用户请求和数据变化,负责调用模型更新数据并显示在视图上。
2. MVP架构MVP是一种基于MVC架构的演变版本,它将控制器(Controller)换成了“中介器”(Presenter),中介器扮演着连接视图和模型的角色。
在MVP架构设计下,模型(Model)用于管理数据,中介器(Presenter)负责处理视图(View)与模型(Model)之间的交互,将接口事件转换为模型行为,然后将更新存储在视图(View)中。
Hive学习总结及应用

一、文档说明熟悉Hive功能,了解基本开发过程,及在项目中的基本应用。
注意:本文档中但凡有hive库操作的语句,其后面的“;”是语句后面的,非文档格式需要。
每个hive语句都要以“;”来结束,否则将视相邻两个分号“;”之间的所有语句为一条语句。
二、Hive(数据提取)概述Hive是构建在HDFS 和Map/Reduce之上的可扩展的数据仓库。
是对HADOOP的Map-Reduce进行了封装,类似于sql语句(hive称之为HQL)计算数据从而代替编写代码对mapreduce的操作,数据的来源还是HDFS上面的文件。
Hive中的表可以分为托管表和外部表,托管表的数据移动到数据仓库目录下,由Hive管理,外部表的数据在指定位置,不在Hive的数据仓库中,只是在Hive元数据库中注册。
创建外部表采用“create external tablename”方式创建,并在创建表的同时指定表的位置。
Hive本身是没有专门的数据存储格式,也没有为数据建立索引,只需要在创建表的时候告诉Hive数据中的列分隔符和行分隔符,Hive就可以解析数据。
所以往Hive表里面导入数据只是简单的将数据移动到表所在的目录中(如果数据是在HDFS上;但如果数据是在本地文件系统中,那么是将数据复制到表所在的目录中)。
三、Hive的元数据Hive中的元数据包括表的名字,表的列和分区及其属性,表的属性(是否为外部表等),表的数据所在目录等。
由于Hive的元数据需要不断的更新、修改,而HDFS系统中的文件是多读少改的,这显然不能将Hive的元数据存储在HDFS中。
目前Hive将元数据存储在数据库中,如Mysql、Derby中。
Hive metastore 三种存储方式:Hive的meta 数据支持以下三种存储方式,其中两种属于本地存储,一种为远端存储。
远端存储比较适合生产环境。
1、使用derby数据库存储元数据(内嵌的以本地磁盘作为存储),这称为“内嵌配置”。
Hive用户手册)_中文版

Hive 用户指南v1.0目录1. HIVE结构 (5)1.1HIVE架构 (5)1.2Hive 和Hadoop 关系 (6)1.3Hive 和普通关系数据库的异同 (7)1.4HIVE元数据库 (8)1.4.1 DERBY (8)1.4.2 Mysql (9)1.5HIVE的数据存储 (10)1.6其它HIVE操作 (10)2. HIVE 基本操作 (11)2.1create table (11)2.1.1总述 (11)2.1.2语法 (11)2.1.3基本例子 (13)2.1.4创建分区 (14)2.1.5其它例子 (15)2.2Alter Table (16)2.2.1Add Partitions (16)2.2.2Drop Partitions (16)2.2.3Rename Table (17)2.2.4Change Column (17)2.2.5Add/Replace Columns (17)2.3Create View (18)2.4Show (18)2.5Load (18)2.6Insert (20)2.6.1Inserting data into Hive Tables from queries (20)2.6.2Writing data into filesystem from queries (21)2.7Cli (22)2.7.1Hive Command line Options (22)2.7.2Hive interactive Shell Command (23)2.7.3Hive Resources (24)2.7.4调用python、shell等语言 (25)2.8DROP (26)2.9其它 (26)2.9.1Limit (26)2.9.2Top k (26)2.9.3REGEX Column Specification (27)3. Hive Select (27)3.1Group By (27)3.2Order /Sort By (28)4. Hive Join (28)5. HIVE参数设置 (31)6. HIVE UDF (33)6.1基本函数 (33)6.1.1 关系操作符 (33)6.1.2 代数操作符 (34)6.1.3 逻辑操作符 (35)6.1.4 复杂类型操作符 (35)6.1.5 内建函数 (36)6.1.6 数学函数 (36)6.1.7 集合函数 (36)6.1.8 类型转换 (36)6.1.9 日期函数 (36)6.1.10 条件函数 (37)6.1.11 字符串函数 (37)6.2UDTF (43)6.2.1Explode (44)7. HIVE 的MAP/REDUCE (45)7.1JOIN (45)7.2GROUP BY (46)7.3DISTINCT (46)8. 使用HIVE注意点 (47)8.1字符集 (47)8.2压缩 (47)8.3count(distinct) (47)8.4JOIN (47)8.5DML操作 (48)8.6HAVING (48)8.7子查询 (48)8.8Join中处理null值的语义区别 (48)9. 优化与技巧 (51)9.1全排序 (53)9.1.1 例1 (53)9.1.2 例2 (56)9.2怎样做笛卡尔积 (59)9.3怎样写exist/in子句 (60)9.4怎样决定reducer个数 (60)9.5合并MapReduce操作 (61)9.6Bucket 与sampling (62)9.7Partition (62)9.8JOIN (63)9.8.1 JOIN原则 (63)9.8.2 Map Join (64)9.8.3 大表Join的数据偏斜 (66)9.9合并小文件 (67)9.10Group By (67)10. HIVE FAQ: (68)1.HIVE结构Hive 是建立在 Hadoop 上的数据仓库基础构架。
开发规范与要求范文

开发规范与要求范文开发规范是一系列的编码原则、技术规范、文档规范等的集合,旨在确保团队开发的代码质量、可读性、可维护性、可扩展性,并提高团队合作效率。
本文将介绍开发规范的要求以及其对项目开发的重要性。
一、命名规范1.变量、函数、方法的命名应具有清晰的表达意义,使用有意义的英文单词或单词的组合。
2.类名、接口名应使用名词或名词词组,并使用大写开头的驼峰命名法。
3.常量名应使用大写字母加下划线的形式,如:MAX_COUNT。
4.避免使用容易混淆的命名,如:i1,l1,O0等。
二、缩进与排版规范1. 使用合适的缩进风格,如四个空格或一个Tab,统一团队内部的缩进风格。
2.代码块的开始和结束要与其对应的可见的包含结构对齐。
3.行宽应控制在80-120个字符之间。
三、代码注释规范1.对于代码中的每个模块或功能,必须提供必要的注释说明。
2.注释应简明扼要、准确清晰,解释代码的关键逻辑以及设计思想。
3.注释应使用英文书写,并遵循一定的规范,如在注释前使用特定的修饰符以区分说明的对象。
四、代码规范1.遵循单一职责原则,每个函数、方法只负责一个功能,尽量避免一个函数或方法实现多种功能。
2.遵循开闭原则,尽量使用扩展而非修改已有的代码。
3.避免使用变量的魔法数值,应提取为常量或配置项。
4.代码尽量简单清晰,可读性强,避免冗余的代码和复杂的逻辑结构。
五、测试规范1.编写单元测试代码,保证代码的正确性和稳定性。
2.合理组织测试用例,覆盖代码的各种情况,包括正常情况和异常情况。
3.定期运行测试用例,及时发现和解决问题,确保程序的健壮性。
六、文档规范1.编写开发文档和用户文档,清晰描述程序的设计思路、开发流程、代码的使用方法等。
2.文档内容应准确、详尽,方便其他开发人员和用户了解项目的细节。
开发规范对于项目开发具有重要的作用:1. 提高代码质量和可维护性:规范的代码易于阅读和理解,减少错误和bug的产生,提高代码的可维护性和可读性。
如何编写高效的Hive UDF函数

如何编写高效的Hive UDF函数Hive UDF(User-Defined Functions)是一种用户自定义函数,在Hive中用于数据处理和数据转换。
编写高效的Hive UDF函数对于提高数据处理和查询的速度和效率非常重要。
本文将介绍如何编写高效的Hive UDF函数,以及一些注意事项和优化技巧。
首先,编写高效的Hive UDF函数需要考虑以下几个方面:1. 选择适当的数据类型:在编写Hive UDF函数时,需要选择合适的数据类型来存储和处理数据。
选择正确的数据类型可以减少内存和磁盘空间的使用,并提高处理效率。
例如,对于整数型数据,使用int或bigint而不是string类型可以节省空间并提高计算性能。
2. 最小化数据复制:在处理大量数据时,数据复制可能成为性能瓶颈。
因此,在编写Hive UDF函数时,应该尽量避免不必要的数据复制。
可以通过使用Hive提供的可变长数据类型(如array和struct)来减少数据复制。
另外,应尽量使用直接访问数据的方式,避免中间转换和复制。
3. 合理使用缓存:Hive具有缓存机制,可以加速查询和数据处理。
在编写Hive UDF函数时,可以使用Hive的缓存功能来优化查询性能。
例如,可以通过将频繁使用的数据加载到缓存中,以减少查询时间。
同时,还可以使用Hive的插件来自定义缓存策略,以满足特定的需求。
4. 优化函数执行顺序:在Hive中,可以通过指定函数的执行顺序来优化查询性能。
在编写Hive UDF函数时,应该考虑函数的执行顺序,将计算量大或耗时长的函数放在前面,以提高整体查询性能。
除了以上的一些基本原则,还可以通过以下一些优化技巧来提高Hive UDF函数的效率:1. 使用原生的Hive函数:Hive提供了许多内置的函数和操作符,这些函数和操作符已经经过了优化和测试。
因此,在编写Hive UDF函数时,应该优先考虑使用内置函数,而不是自定义函数。
这样可以减少开发工作量,并提高查询性能。
实验4 大数据分析平台中Hive表操作

作业执行结果给用户。Hive并非为联机事务处理而设 计,Hive并不提供实时的查询和基于行级的数据更新 操作。Hive的最佳使用场合是大数据集的批处理作业, 例如,网络日志分析。
Hive没有专门的数据存储格式,也没有为数据建 立索引,用户可以非常自由地组织Hive中的表,只需 要 在 创 建 表 的 告 诉 Hive 中 的 列 分 隔 符 和 行 分 隔 符 , Hive就可以解析数据。
1.完成Hive的DDL操作; 2.在Hive中实现新建、显示、修改和删除表等 操作。
(四) 实验步骤
1.熟悉Hive原理; 2.Shell环境下的Hive表操作。
1、熟悉Hive原理
Hive是Hadoop大数据生态圈中的数据仓库,其提 供以表格的方式来组织与管理HDFS上的数据、以类SQL 的方式来操作表格里的数据,Hive的设计目的是能够 以类SQL的方式查询存放在HDFS上的大规模数据集,不 必开发专门的MapReduce应用。
实验四 大数据分析平台中Hive表操作
(一) 实验目的
1.理解Hive的体系机构; 2.熟悉Hive的工作原理; 3.掌握Hive表的相关操作。
(三) 实验环境
1.大数据分析实验系统(FSDP); 2.CentOS 6.7; 3.Hadoop 2.7.1; 4.Hive 1.2.1。
(二) 实验要求
(1)用户编写HiveQL并向Hive运行时环境提交改 HiveQL。
(2)Hive运行时环境将该HiveQL翻译成MapReduce 和HDFS操作。
(3)Hive运行时环境调用Hadoop命令行接口或程序 接口,向Hadoop集群提交翻译后的HiveQL。
(4)Hadoop 集 群 执 行 HiveQL 翻 译 后 的 MapReduceAPP或HDFS-APP。
Hive函数及语法说明

无线增值产品部Hive函数及语法说明版本:Hive 0.7.0.001eagooqi2011-7-19版本日期修订人描述V1.0 2010-07-20 eagooqi 初稿2012-1-4 Eagooqi ||、cube目录⏹函数说明 (2)⏹内置函数 (2)⏹增加oracle函数 (14)⏹增加业务函数 (17)⏹扩展函数开发规范 (19)⏹语法说明 (21)⏹内置语法 (21)⏹增加语法 (28)⏹扩展语法开发规范(语法转换) (29)⏹ORACLE sql 对应的hSQL语法支持 (29)⏹函数说明参考链接:https:///confluence/display/Hive/LanguageManualCLI下,使用以下命令显示最新系统函数说明SHOW FUNCTIONS;DESCRIBE FUNCTION <function_name>;DESCRIBE FUNCTION EXTENDED <function_name>;⏹内置函数数值函数Mathematical Functions集合函数Collection Functions类型转换函数Type Conversion Functions日期函数Date Functions条件判断函数Conditional Functions字符串函数String Functions其他函数Misc. FunctionsxpathThe following functions are described in [Hive-LanguageManual-XPathUDF]:∙xpath, xpath_short, xpath_int, xpath_long, xpath_float, xpath_double, xpath_number, xpath_stringget_json_objectA limited version of JSONPath is supported:∙$ : Root object∙. : Child operator∙[] : Subscript operator for array∙* : Wildcard for []Syntax not supported that's worth noticing:∙: Zero length string as key∙.. : Recursive descent∙@ : Current object/element∙() : Script expression∙?() : Filter (script) expression.∙[,] : Union operator∙[start:end.step] : array slice operatorExample: src_json table is a single column (json), single row table:json{"store":{"fruit":[{"weight":8,"type":"apple"},{"weight":9,"type":"pear"}], "bicycle":{"price":19.95,"color":"red"}},"email":"amy@only_for_json_udf_","owner":"amy"}The fields of the json object can be extracted using these queries:hive> SELECT get_json_object(src_json.json, '$.owner') FROM src_json; amyhive> SELECT get_json_object(src_json.json, '$.store.fruit[0]') FROM src_json;{"weight":8,"type":"apple"}hive> SELECT get_json_object(src_json.json, '$.non_exist_key') FROM src_json;NULL内置聚合函数Built-in Aggregate Functions (UDAF)增加oracle函数增加业务函数扩展函数开发规范提供以下两种实现方式:a继承org.apache.hadoop.hive.ql.exec.UDF类代码包为:package org.apache.hadoop.hive.ql.udf实现evaluate方法,根据输入参数和返回参数类型,系统自动转换到匹配的方法实现上。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据库命名规范
数据库层 Report工作层 Report层 OLAP工作层 OLAP层 DW 工作层
DW 层
库名 Htl_TmpDB Report_HtlDB Htl_TmpDB OLAP_HtlDB Htl_TmpDB
DW_HtlDB
Source 层
Source_HtlDB
Dimenstion层
– 避免使用关键字 – 实在不能避免,使用`转义
例如 `From`
最佳实践
• 总体原则:
– 不同角色,不同开发工具 – 与时间相关的表,按照时间做分区 – 支持多日的job同时运行,互不影响 – 良好、可维护的目录结构
最佳实践—角色
• 两大类:
– ETL – 分析师
最佳实践—角色
• ETL
• 自动运行Hive上ETL Job • 推荐使用环境:
• 建库语句
– 指定location
• create database if not exists DW_AdServerDB location '${location}/DW_AdServerDB.db';
– 建表时,按照字符类型的日期分区
PARTITIONED BY (d string); 格式为 YYYY-MM-DD 例如: 2013-07-23
• 判断参数格式 • 内部使用相对目录 • 内部不包含配置信息
最佳实践—ETL Job开发实例
shell脚本实例:
#!/bin/bash curDir=$(cd `dirname $0`; pwd) cd $curDir source common.sh
properties="../etc/db.abtest.properties" hiveDb=${hive_source_abtestdb} sourceDb=${mysql_abtestdb}
• 开发 HiveSQL • 使用 Shell 封装 SQL
项目开发流程 – 数据导入
• 需要从外部数据源导入数据 • 几种模式:
– 用SQOOP从数据库导入到Hive – Hbase 提供的RC File,直接创建为外部表 – CSV/TSV文件上传到HDFS,创建外部表
• kettle
项目开发流程– 开发
Dim_Hot
el
UBT
OLAP AbTest Hotel
Dimension
UBT
DW AbTest Hotel
Dim_AbT est
UBT
Source AbTest Hotel
Dim_UBT
数据库命名规范
• 总体原则:
– 数据库名以DB结尾 – 采取首字母大写 – 用下划线_风格的拼写规范 – 专门的临时库用于中间表
Hive应用现状
• 已经上线的项目
– UBT 数据进hive – ABTest – OrderSearch – 。。。 • 后续项目
• UBT 横向业绩 • Mysql汇总表切hive V1.0
Hive应用现状
• 涉及到的组
• Data Infrastructure • 基础分析服务组 • 酒店组
• shell脚本 .sh • 配置文件 .properties • 建库、建表语句 .sql • hive脚本 .sql • 日志文件 .log
最佳实践—ETL Job开发实例
shell脚本
• 使用BASH解释执行
– #!/bin/bash
• 智能判断当前目录
– curDir=$(cd `dirname $0`; pwd) – cd $curDir
• Developer 读、写、
• Reporter 读、clone
• Guest
读
项目开发流程 --- 数据库设计
• 设计数据库、表结构
– 根据业务需求,设计非结构化的表结构 – 是否需要分区 – 只初始化一次 – 避免在SQL中
• 创建数据库 • 建表 • drop表
项目开发流程 --- 开发Hive SQL
Query & analysis层
Dim_UbtDB Tmp_UbtQueryDB
表命名规范
• Source 层
– 基本原则: 与源表名一致 – 缺陷: 会有多种风格的表名存在
• Dimension 层
• 表名必须以Dim为前缀
• 其他层
• 首字母大写、不用下划线的驼峰命名规范 • 事实表以Fact为前缀
./commonFullTable.sh $properties $hiveDb experiment $sourceDb experiment
最佳实践—ETL Job开发实例
配置文件内容:
数据库用户 数据库密码 数据库驱动 数据库 jdbc url
最佳实践—ETL Job开发实例
配置文件实例: db.dw.properties
– 更新Release Notes 到Confluence – 监控job运行
项目开发流程 – 部署
• 存在的问题:
– 开发环境集群计算能力不足
– 熟悉过程
数据库层
Report OLAP DW
Tmp
DIM Tmp query
Source
每层内按照业务线切分
UBT
Report AbTest Hotel
– bipub 公共组
– bitrain
无线/新业务组
– bicorp
商旅组
– bianalysis 基础分析服务组
– bimob
无线/新业务组
最佳实践—角色
• Hive 自定义配置
– UDF 自动加载 .hiverc
最佳实践—角色
– 分析师
• AdHoc Job • 推荐使用环境:
– Squirrel GUI界面查询
最佳实践—ETL Job开发实例
– 部署到Leabharlann home/bianalyais/abTest
• bin shell脚本 • data 数据文件 • etc 配置文件 • schema 建库、建表语句 • script hive脚本 • logs 日志文件
最佳实践—ETL Job开发实例
– 文件后缀名规范
Hive应用现状
• 项目开发领先于规范制定 • 摸石头过河的过程 • 不断提炼、完善规范的过程
规范
• 项目开发流程 • 命名规范
• 数据库、表、视图
• 用户规范
项目开发流程
• 创建Git项目 • 设计数据库、表结构 • 开发需要的HiveSQL、Shell脚本 • 数据导入Hive(可选)
项目开发流程
最佳实践—ETL Job开发
• 小的Git项目
– 管理代码、脚本 – 目录结构与运行环境完全一致
• 专门的建库、建表脚本 • 剥离与环境相关的配置文件 • 在开发环境上完成开发 • 用crontab部署试运行
最佳实践—ETL Job开发实例
• Git项目目录结构
• bin shell脚本 • data 数据文件 • lib 放置jar包 • etc 配置文件 • schema 建库、建表语句 • script hive脚本 • logs 日志文件
表命名规范实例
• Fact_UBT_Order_Online X
• FactUBTOrderOnline √
• ubt_dim上的维表 Platform X
• 维表 DimPlatform
√
列命名规范
• Source层,保持原有列名不变 • 其他层
– 首字母大写、其余字母小写、不用下划线的驼 峰风格
• 在开发Hadoop集群上开发、测试 • 审核规范 • 性能测试 • 在生产环境部署
项目开发流程 --- Git
• Git 公司统一的版本管理工具
– 推荐使用的客户端
• msysgit Git + TortoiseGit
项目开发流程 --- Git
• Git 公司统一的版本管理工具
– 角色:
• Master 全部权限
• 权限:
– 业务数据库,读权限 – 个人临时库,写权限
最佳实践—多日job
• 支持多日job并发运行,要求: – 所有中间表都是分区表 – 预先创建好TmpDB以及对应的Tmp表 – 采用 INSERT OVERWRITE TABLE ttt PARTITION (d=‘YYYY-MM-DD’) DML语句覆盖旧 数据
– SSH 客户端 (Secure SSH Client) – Hive 命令行客户端
» Shell脚本内部调用 Hive –f sqlFile.sql
• 权限:
– 业务线内部数据库,写权限 – 业务线外数据库,读权限
最佳实践—角色
• ETL 账户列表
– bihtl 酒店组
– bipkg 度假组
– biflt 机票组
#!/bin/bash user='' password='' driver='com.microsoft.sqlserver.jdbc.SQLServerDriver' dbUrl='jdbc:sqlserver://192.168.99.37:28747;databaseName='
最佳实践-建库
• 在开发Hadoop集群上开发、测试
– Job是否需要多日重跑? – 对应数据是否需要修复? – 配置信息单独维护 – 目录结构与生产环境一致 – 目录结构与Git项目的目录结构一致 – Windows上的文件上传至linux机器上:
• Dos2unix避免\r的问题
项目开发流程– 审核
• 审核规范