⼤数据预处理kettle课堂笔记
⼤数据预处理kettle课堂笔记
第⼀章数据预处理概述
1. 数据背景--影响数据质量的因素
* 准确性,完整性,⼀致性从采集⾓度看
* 相关性,时效性从应⽤⾓度看
* 可信性,可解释性从⽤户⾓度看
2. 数据处理的⽬的
* 重要性
* 数据预处理是数据挖掘中必不可少的关键⼀步,更是进⾏数据挖掘前的准备⼯作。
* ⽬的
* 通过对数据格式和内容的调整,使数据更符合挖掘的需要
* 保证数据挖掘数据的正确性和有效性
* 达到改进数据的质量,提⾼数据挖掘过程的准确性和效率
* 数据预处理的流程
* 数据清理-->数据集成-->数据变换-->数据归约 **可⾮顺序使⽤**
3. 数据清理
1. 数据清理的对象:脏数据(由于重复录⼊,并发处理等不规范的操作,导致产⽣不完整,不准确的,⽆效的数据)
2. 数据清理的⽅法
* 缺省值处理
* 忽略元祖,⼈⼯填写缺失值,使⽤⼀个全局变量填充缺失值,使⽤属性的中⼼度量填充缺失值,使⽤最可能的值填充缺失值。 * 噪声数据
* 噪声数据是被测量变量的随机误差或⽅差。
* 分箱
- 例:8、24、15、41、6、10、18、67、25。
- 分为深度为3的3个箱⼦,每个箱⼦采⽤不同的⽅式来平滑数据:
- 箱1采⽤均值法,箱2采⽤中位数,箱3采⽤边界光滑。
- 解析:
- 排序:6,8,10,15,18,24,25,41,67
- 分箱:
- 箱1:6、8、10
- 箱2:15、18、24
- 箱3:25、41、67
-
分别采⽤三种不同的分箱法求出平滑存储数据的值:
- 平均值:8 箱1:8、8、8
- 中值:18 箱2:18、18、18
- 边界值:箱3:25、25、67
3. 数据集成
1. 定义
* 将相互关联的分布式异构数据源集成到⼀起,使⽤户能够以透明的⽅式访问这些数据源。
4. 数据变换
1. ⽬的:将数据变换或统⼀成易于进⾏数据挖掘的数据存储形式,使得挖掘过程可能更有效。
2. 数据集成的⽅法
* 最⼩--最⼤规范化
-
v'=v-minA/maxA-minA * (new_maxA-new_minA)+new_minA
* z-score规范化
- v'=v-meanA/standard_devA
* ⼩数定标规范化
- v'=v/10^j
5. 数据规约
* 维规约、数量规约、数据压缩
* 注意:冗余数据的删除既是⼀种数据清理形式,也是⼀种数据规约。
6. 数据预处理⼯具
* kettle、Python
第⼆章 Kettle⼯具的基本使⽤
1. kettle的使⽤
1. kettle是⼀个java程序
2. 转换的定义:转换时ETL解决⽅案中最主要的部分,它负责处理抽取、转换、加载各阶段对数据⾏的各种操作。
3. 转换的组成:步骤、跳、注释。
* 步骤的关键特性
- 步骤需要有唯⼀的名字
- 每个步骤都会读、写数据⾏
- 步骤之间通过跳进⾏数据⾏的单项传输
- ⼤多数的步骤都可以有多个输出跳
- 在运⾏转换时,⼀个线程运⾏⼀个步骤,所有步骤的线程⼏乎同时运⾏
* 转换的跳
- 步骤之间带箭头的连线,跳定义了步骤之间进⾏数据传输的单向通道。
- 从程序执⾏的⾓度看,跳实际上是两个步骤线程之间进⾏数据⾏传输的缓存
- 从功能⾓度来看,转换有明确的起点步骤和终点步骤
* 数据⾏
- 数据以数据⾏的形式沿着步骤移动。⼀个数据⾏是零到多个字段的集合。
2. 第⼀个转换案例
1. 表输⼊
* 可以指定数据库中读取指定关系表的数据
2. 参数配置
* 环境变量配置全局性
* 命名参数配置局部性
第三章基于kettle的书导⼊与导出
1. 基于⽂件数据的导⼊与导出
1. ⽂本⽂件
* CSV⽂件 CSV⽂件输⼊
* 固定宽度⽂件固定宽度⽂本⽂件输出
2. Excel⽂件
* Excel⽂件输⼊
- 结构化和⾮结构化表格数据
* ⽂本⽂件输出
3. XML⽂件
* XML是⼀种遵循规范的半结构化的⽂本⽂件
* Get data from XML、XML output
2. 基于数据库的数据导⼊与导出
1. 分类
* 关系型数据库
- MySql、Oracle、SQL Server、DB2
* 菲关系型
java类的概念- Hbase
2. 数据库连接
* 实际是数据库连接的表述:也就是建⽴实际连接所需要的参数
* ⼀般选项卡
- 主机名称
-
数据库名称
- 端⼝号
- ⽤户名和密码
3. 基于Web数据的导⼊与导出
* HTTP Client
- 发出⼀个HTTP GET请求或者访问HTML页⾯,调⽤此步骤⾥的URL从Web获取数据
* HTTP Post
- 发出⼀个HTTP POST请求,调⽤此步骤⾥的URL从Web获取数据
* 注意:都是查询类步骤,需要⼀个输⼊类步骤来激活(⾃定义常量)
4. 基于CDC变更数据的导⼊与导出
1. 数据导⼊的主要挑战
* 初始数据量⼤和⽹络延迟
2. 定义
* 识别出变化的数据并只导⼊这部分数据被称为变化数据捕获,即CDC
3. 分类
* 侵⼊性
- 源数据
- 时间戳、⾃增序列
- 缺点:区分插⼊和更新操作,多次更新操作,删除操作,实时性
- 基于触发器的CDC
- 定义:当Insert、update、delete等Sql进⾏执⾏时,可以出发数据库⾃有的触发器,并执⾏某些动作。
- 分类:insert、update、delete
- 优点:可以实时监测到数据的所有变化
- 缺点:需要服务协议或数据库管理员的允许,创建数据库语法不同
- 快照
- 原理:将源数据中的所以数据加载到数据仓库的缓冲区形成源数据的第⼀个快照版本,下⼀次需要同步时,再将源数据加载到数据仓库的缓冲区形成源数据的第⼆个快照版本。
* ⾮侵⼊性
- ⽇志
- 基于⽇志的⽅式是最⾼级的、最没有侵⼊性的CDC⽅法。数据库会把插⼊、更新、删除操作都记录到⽇志⾥。
第四章数据清理
1. 数据清理概述
1. 数据清理
* 试图监测和去除数据集中的噪声数据和⽆关数据,处理遗漏数据,去除空⽩数据域和知识背景下的⽩噪声,解决数据的⼀致性、唯⼀性问题,从⽽达到提⾼数据质量的⽬的。
2. 数据清理的重要性
* 数据清洗在整个分析过程中时不可或缺的⼀个环节,在实际操作中,它更占据分析过程的50%--80%的时间。
3. 数据清理的步骤
* 转换⽬录,脚本⽬录,检验⽬录
2. 字符串清理
1. 主要步骤
* 字符串剪切、字符串替换、字符串操作
3. 字段清理
1. 主要步骤
* 列拆分为多⾏、拆分字段、合并字段、字段选择
4. 数据效验
* 数据效验、信⽤卡效验、电⼦信箱效验、XML⽂件效验
* 功能单⼀:针对性很强
5. 数据排重
1. 产⽣重复数据的原因
* 数据录⼊出错、数据不完整、数据缩写,系统对数据表⽰不尽相同
2. 分类
* 完全重复数据:两个数据⾏的数据完全⼀致
* 不完全重复数据:客观上表⽰现实世界中的同⼀实体,但由于表达⽅式不同或拼写错误等原因,导致数据存在了多条重复记录。
3. 去除完全重复数据的两个步骤
* 去除重复数据-->针对有序记录
* 唯⼀⾏(哈希值)
6. 利⽤脚本进⾏数据清理
1. 脚本步骤
* JAVAScript代码,正则表达式,公式,Java代码,⽤户⾃定义Java类
第五章 Kettle的作业设计
1. 作业的概念及组成
1. 概念
* ⼀个作业包含⼀个或多个作业项,这些作业项以某种顺序来执⾏。
* 作业执⾏顺序由作业项之间的跳(Hop)和每个作业项的执⾏结果来决定。
2. 组成
* 作业项
-概念:作业的基本组成部分,以图表的⽅式图形化展⽰。
- 和步骤的区别:
- 影⼦拷贝
- 作业项之间传递⼀个结果对象
- 可以并⾏执⾏
* 作业跳
- 概念:作业项之间的连接线,定义作业的执⾏路径。
- 判断⽅式:
- ⽆条件的
- 当结果为真
-
当结果为假
- 两种状态:Enabled可⽤,Disabled不可⽤
* 注释
- 增强了程序的可读性,减低维护成本
2. 作业的执⾏⽅式
1. 三种⽅式
* 回溯算法、多路径和回溯、并⾏执⾏
3. 作业的创建及常⽤作业项
1. 创建
* 新建-->保存名称路径-->⽂件格式*.kjb
2. start
* 作业的起点,有且仅有⼀个
* 设置作业的定时调度
3. 作业“作业项”
* 调⽤预定义的作业
4. “转换”作业项
* 调⽤预定义的转换
4. 变量
1. 概念
* 变量是⼀个任意长度的字符串值,它有⾃⼰的作⽤范围
2. 初始化变量的两种⽅法
* 系统内置,⽤户⾃定义
3. 变量的使⽤
* ${变量名} %%变量名%%
* Ctrl+Alt+空格-->显⽰所有变量
5.监控
1. 两种⽅式
* ⽇志:针对执⾏过程的信息反馈
* 邮件:通过发送邮件的⽅式通知管理员作业的执⾏情况
2. ⽇志级别
* Nothing,Error,Minimal,Basic,Detailed,Debug,Rowlevel
第六章构建数据仓库
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论