大众点评平台ETL概念设计与实现


5.1平台ETL概念设计与实现

任务是该企业ETL数据传输平台调度和运行的基本单位,任务是一次传输或一次转换。任务分为计算任务和传输任务。传输任务还可以细分:一种是普通的传输任务。数据的输入来自关系型或Nosql数据库。另一种是后端日志拉取再经过解析程序(如MapReduce等)存入分析库。计算任务主要分为三类:HiveHql任务、JavaJar包任务和PythonShell等脚本任务。

有任务自然就有实例,在该企业ETL实践中,实例分为两种,一种是预跑实例,即不通过调度系统用户手动运行的实例。这主要是为了满足任务测试和补足先于任务存在的历史数据的需求。另一种是调度实例,即靠调度系统按照任务的Cron表达式定时调度生成的实例,这是生产环境中的主流。

任务存在工作流的概念,即多个任务按时间顺序组合在一起的工作流。一般一个工作流对应一个完整ETL过程。上游的任务必须在下游任务开始之前结束,否则下游任务会一直处于等待状态。另外,上下游任务之间具有顺序强制性的,之间叫强依赖。没有顺序强制性的,叫弱依赖。与任务类似,实例之间的上下游关系是调度起来的那一瞬间任务上下游关系的快照,也具有强弱依赖的区别。

任务还存在高低密级的概念,因为很多数据涉及用户的隐私和公司的隐私,大部分时候这些列的数据也没分析的必要(如用户登录密码),所以对数据传输任务区分了高低密级,一般任务默认为低密级,会过滤掉高密字段。高密任务必须咨询管理员后,由管理员代为配置。而一个列或一个表是否为高密这是由元数据信息得到的。元数据存储有专用的服务接口可供调用。

另外,传输任务传的是新增部分,叫做增量传输。如果穿的是全部,则叫做全量传输。这和数据ETL过程的两种类型对应[19]。全量传输一般用于任务刚创建、需要补足历史数据,而增量传输则用于每天更新数据,一般来说,需要ETL抽取分析的源数据表必须具有一个Timestamp字段或者自增的主键字段来标识增量。

你可能感兴趣的:(大数据,etl)