1. ETL基础
1.1. ETL概念
数据孤岛:
- 企业中的业务数据通常会分散在多个业务数据库中;
- 如果需要对这些数据进行数据分析,正因为这些数据的分散存储,会造成统一分析的困难。
数据仓库:
- 为了解决数据孤岛,需要将数据进行集中存储,方便集中分析;
- 数据仓库是一种集中进行分析的解决方案
如下图就是在分散的数据孤岛通过ETL的方式进行数据的集中输入到数据仓库中;
ETL:将企业中分散的数据,集中的输入到数据仓库中的过程;
ETL的流程主要分为3个过程:
- extract 抽取
- transform 转换
- load 加载
1.2. ETL的实现方式
使用工具取完成ETL的相关任务:
- kettle
- sqoop
- flume
- datax
使用编程语言开发etl系统,比如python等;
1.3. 简单总结
1.4. 结构化、半结构化、非结构化数据
常见的数据存储格式,除了最常见的关系型表数据,还有一些常见的文件存储格式如下:
- CSV
- JSON
- XML
结构化数据
可以用schema描述的数据,就是结构化数据:
schema:数据的一种描述,具有明确意义的行列式二维表格数据,可以简单的认为schema就是类似数据库的表格;
常见的结构化数据有:CSV、Excel
半结构化数据
部分内容可以用schema描述的数据
比如JSON和XML
非结构化数据
完全无法用schema描述的数据,例如:
2. kettle——ETL过程的处理工具之一
2.1. 安装部署
kettle是基于Java开发的,所以电脑环境需配置好Java jdk:
- 环境变量:JAVA_HOME;
- 环境变量:path
- 解压kettle软件
- windows系统双击spoon.bat
3. kettle入门
最重要的是配置组件的过程
3.1. txt转换excel
3.1.1. 配置组件
配置文本文件输入
编码方式最好是utf-8
字段获取
3.2. excel转换为mysql表
- 快捷键ctrl+n新建转换
- 构建流图
3.2.1. 配置输入组件
3.2.2. 配置输出组件
新建数据库连接
- 建立与已存在的目标表的连接
- 执行sql创建数据表
3.3. pycharm配置mysql连接
- 点击数据库图标
- 找到mysql数据源
- 配置数据源
- 数据库驱动配置
3.4. mysql表复制备份
- 新建转换
- 构建数据流图
3.4.1. 配置输入组件
3.4.2. 配置输出组件
3.5. sql语句快速复制目标表
3.6. sql数据库,插入/更新组件
- 新建转换
- 构建数据流图
3.6.1. 配置输入组件
最后预览一下,查看是否有问题。
3.6.2. 配置输出组件
3.7. mysql转excel加switch组件
- 新建转换
- 构建数据流图
3.7.1. 配置输入组件
3.7.2. 配置swtich组件
3.7.3. 配置输出组件
3.8. sql脚本执行
3.9. job作业
3.9.1. 第一步 新建作业
3.9.2. 第二步 构建流图
3.9.3. 配置组件
3.9.3.1. 配置转换组件
- 双击配置转换组件
- 浏览选择需要执行的ktr文件(ktr文件是前面保存的‘转换’文件)
3.9.3.2. 配置start组件
start组件是一个将作业定时执行的组件,表现上是将一个转换文件每隔一段时间间隔就去执行文件。