Datastage

date
Jun 3, 2016
slug
datastage
status
Published
tags
ETL
summary
什么是ETL 从数据源中抽取数据(Extraction),然后对这些数据进行转化(Transformation),最终加载(Loading)到目标数据库或数据仓库中去,这就是我们通常所说的“ETL过程”,它是数据整合的核心内容 ETL之前要对源数据作数据内容分析 • 数据内容格式、类型、长度,不同的字符集等 • 收集商业逻辑,了解客户的需求,从而觉醒ETL的策略
type
Post

什么是ETL

从数据源中抽取数据(Extraction),然后对这些数据进行转化(Transformation),最终加载(Loading)到目标数据库或数据仓库中去,这就是我们通常所说的“ETL过程”,它是数据整合的核心内容

ETL之前要对源数据作数据内容分析

  • 数据内容格式、类型、长度,不同的字符集等
  • 收集商业逻辑,了解客户的需求,从而觉醒ETL的策略

脏数据的清洗

  • 数据的完整性和一致性

传统ETL方法的弊端

  • 需要手工编写大量的代码,费时费力
  • 难以扩展、维护费用高
  • 需要不断调整代码来符合需求的变化
  • 对于不同的源和目标需要分别编写抽取和加载的代码
  • 难以对元数据进行管理

ETL工具的优点

  • 图形化的界面,易于理解和操作
  • 大数据处理能力强
  • 能够处理多种文件形式的数据

常见的ETL工具

  • IBM公司的DataStage
  • Informatica
  • SAP Data Integrator

什么是DataStage

DataStage是一套完成高效的专业数据整合工具。它可用于

  • 数据仓库(Data Warehouse)
  • 数据集市(Data Mart)
  • 系统迁移(System Migration)

通过DataStage

可以对ETL过程进行方便的管理 通过图形化的界面设计作业,对数据进行抽取、转换和加载。 可以对作业的执行进行调度和监控 使用内建的本地Repository,可方便的导入、导出和管理数据(Metadata)

出色的数据源连接能力

ETL工具的数据源连接能力是非常重要的,这是直接决定它能够应用的范围。DataStage能够直接连接非常多的数据源,包括:文本文件,XML文件,企业应用程序等;几乎所有的数据库系统,比如DB2、Oracle、MS SQL Server、Informix等

DataStage的体系结构及其组件

  • DataStage的开发环境基于C/S模式
  • Client只能安装在Windows平台上面
  • Server支持多种平台,如Windows、Redhat Linux、AIX、HP-UNIX等。
  • DataStage Client有四种客户端工具,分别是
  • DataStage Administrator 设置服务器,添加删除工程,设置工程属性等。
  • DataStage Manager 导入元数据,备份工程
  • DataStage Designer 设计、编译、执行Job
  • Director 执行、调度Job,检查、监控Job的运行状态

如何使用DataStage完成工作

  • DataStage客户端工具连接到DataStage Server上进行ETL Job开发,DataStage Server再与后台的数据库连接起来进行数据处理
  • DataStage的客户端工具之间是相互合作的关系

ETL Job开发流程

  • 用DataStage Administrator 新建项目,并对项目的属性进行设置
  • 用DataStage Designer连接到新建的项目上进行图形化的ETL Job的设计
  • 用DataStage Director来监控Job的运行日志,对设计好的ETL Job设置运行计划,比如多长时间运行一次ETL Job
  • 用DataStage Manager进行ETL Job的备份,管理元数据等

DataStage Administrator

DataStage Designer and Manager

  • 导入表定义
  • 备份工程
  • 导入备份工程
  • 图形化、拖拽式的创建、删除、编辑Job,对Job进行编译和运行

DataStage Director

  • 对Job进行调度
  • 监控、记录Job运行的log

DataStage并行处理机制

管道式数据处理

  • 流水线式的数据处理过程
  • 转换、清洗和加载同时进行
  • 在数据处理过程中数据不落地,减少I/O开销
  • 保持处理器始终被使用

分区算法(Partition Parallelism)

数据被分为多个子集(subsets)进行处理

这些子集被称为“分区”(节点nodes)

对每个分区里的数据都进行相同的操作

例如:对数据进行过滤操作时,每个分区都会按照相同的方式对数据进行过滤

可以达到接近线性的扩展

假设数据在每个节点上时均匀分布的 8个处理器快8倍 24个处理器快24倍

常用Stage介绍

Sequential file stage

适用于一般顺序文件(定长或不定长),可识别文本文件或IBM大机EBCDIC文件 可作为数据源或目标

Data Set Stage

  • DataSate内部文件格式,扩展名ds
  • .ds文件保存元数据和分区信息,但不包括数据本身
  • 以二进制存储,无法被外部程序读取
  • 数据在DataStage读写时不需要进行转换,效率最高
  • 可作为数据源或目标

Transformer stage

  • 功能非常强大的Stage
  • 需要C++编译器的支持
  • 有一个input link,多个output link
  • 可以设置stage变量简化代码
  • 可以对字段进行转换、判断
  • 可以通过约束来指定符合条件的数据输出到哪个output link
  • 可以使用自带的多种函数对数据进行处理、转换
  • 在开发过程中可以使用拖拽对字段进行Mapping
  • 可以在Mapping过程中对输出的字段进行增添或删减

Copy Stage

  • 可以有一个输入,多个输出。它可以在输出时改变字段的顺序,但是不能改变字段类型。
  • 当只有一个输入及一个输出时最好将Force设置为True,这样可以在Designer里看到运行结束,否则将无法标示运行结束,但不悔影像运行结果数据

Filter Stage

  • 只有一个输入,可以有多个输出。根据不同的筛选条件,可以将数据输出到不同的output link

Funnel Stage

  • 将多个字段相同的数据文件合并为一个单独的文件输出
  • Continuous Funnel 从每一个input link中循环取一条记录
  • Sort Funnel 按照Key值排序合并输出
  • Sequence 先输出第一个input link的数据,输出完毕后再输出第二个input link的数据,以此类推,直到结束(可以通过调整link ordering调整输出顺序)

Lookup Stage

  • 把数据读入内存执行查询操作,将匹配的字段输出,或者在符合条件的纪录中修改或加入新的字段

Join Stage

  • 将多个表连接后输出,连接方式为:Full Outer,Inner ,Left Outer,Right Outer

Join Stage和Lookup Stage对比

  • Join stage将多个表的字段连接起来输出结果
  • 输入的数据分为主Link和辅Link,它们之间必须要有相同的Key字段进行关联
  • 特点:对所有主、辅表数据量都非常多,且数量级相差不大的情况下使用
  • Lookup stage功能与Join Stage蕾丝,都分为主表与辅表,通过关键字段匹配,然后取出需要的数据
  • Lookup允许有一条reject link,将lookup失败的数据输出到其他stage
  • Lookup允许有四种处理方式:Continue、Drop、Fail、Reject
  • 允许返回多条匹配上的纪录(join只能返回一条)
  • 特点:不对数据进行排序,而是将辅表中的所有数据装入内存,再与主表中每一条数据进行匹配
  • 在辅表数据记录远少于主表的情况下适用,且辅表数据量不能太大,以确保能够全部装入内存

Sort stage

功能说明:只能有一个输入及一个输出。按照指定的Key值进行排序。可以选择升序还是降序,是否允许去除重复的数据(只能保留第一条)

Remove Duplicates stage

功能说明:去除按照key字段排好序的数据中key值重复的纪录,通常与sort stage配合使用,可选择保留重复纪录的第一条还是最后一条

Row Generator stage

按照给定的条件生成伪数据,一般用于测试

Peek stage

显示各字段的数据内容,可控制显示的纪录数量,并且按分区编号显示数据,可以选择结果输出到Job log或output到文件,在开发job的过程中十分有用,可以作为job开发过程中的临时数据终点,以便检查数据的正确性

© XingKaiXin 2023 - 2024