1 ETL介绍
1.1 数据孤岛
随着企业内客户数据大量的涌现,单个数据库已不再足够。为了储存这些数据,公司通常会建立多个业务部门组织的数据库来保存数据。比如,随着数据量的增长,公司通常可能会构建数十个独立运行的业务数据库,这些数据库具有不同的业务和用途。
这个就导致了数据孤岛,整个组织的数据被分散到各个地方。如下图所示:
1.2 数据仓库
为了解决数据分析领域的数据孤岛问题,通过工具或程序,将零散的数据,统一收集到一个位置进行“集中储存”,以便于“集中分析”。
1.3 ETL的引出
将数据进行收集的任务,称为ETL。
ETL:Extract-Transform-Load,用来描述将数据从来来源端经过抽取、转换、加载至目的端的过程。
ETL一词较常用于数据仓库。
本质上:
1.4 ETL的实现
1、专门的ETL软件:Kettle、DataX、Sqoop等;
2、使用代码编程完成:Python、Java等均可以完成ETL程序的开发。
2 常见的数据格式
2.1 CSV格式
逗号分隔符,也可以永其他字符作为分隔符。
2.2 json格式
json是储存和交换文本信息的语法,类似XML。它是Key-Value型的。例如:在这里插入代码片
{
"name": "张三",
"age": 28,
"city": "北京"
}
JSON(JavaScript Object Notation)本质上是一个字符串格式的数据表示方式,虽然它的结构类似于对象或字典,但传输和存储时都是以字符串的形式存在的。
2.3 xml格式
XML(eXtensible Markup Language)是一种用于结构化数据存储与传输的标记语言,常用于配置文件、数据交换等场景。
<?xml version="1.0" encoding="UTF-8"?>
<person>
<name>张三</name>
<age>28</age>
<city>北京</city>
</person>
3 数据结构类型
3.1 结构化数据
- 结构化数据也称为行数据,是可以由一个二维表所描述的数据。
- schema就是表结构,在schema的定义下,每一列,每一个位置,应该是什么类型的数据,表达的什么意义都是确定的。
- 常见的结构化数据:
① excel
② json不一定是结构化的,具体看json的内容。如果是简单的Key-Value就是结构化的(可以直接转成二维表);如果是复杂嵌套的json,就不是结构化的。
3.2 半结构化数据
3.3 非结构化数据
完全没办法用二维表来描述。如图片、音频、视频等。
结构化、半结构化、非结构化描述的是一堆数据在一起后的类型。
4 需求分析
4.1 背景说明
本次案例,是处理一个零售公司的业务数据。这个公司是卖收银机(扫码腔)的,收银机结账后,将用户购买的信息通过网络发送到公司的后台,公司后台就会收集到非常多的用户购买的订单数据。
因此,我们需要做的是,将这个公司的业务数据,通过ETL任务,采集到Mysql以及文件储存中。
4.2 需要采集的数据
(1)json数据:订单业务数据,一笔订单的内含数据,如时间、价格、商品等,要采集到Mysql和csv中。
(2)mysql数据:后台数据库我们要采集的内容,如条码数据,如产地、重量;
(3)日志数据。
4.3 数据在哪儿
一、数据来源
- JSON 文件(订单数据)
- 商品数据库 MySQL(商品信息)
- 后台服务日志文件(log 文件数据)
二、存储目标
- 写入 MySQL 数据库(当前作为数据仓库的替代)
- 输出为 CSV 文件,用于数据备份
三、流程简述
- 从 JSON、MySQL 和 日志文件 中采集数据
- 将采集数据写入 MySQL 数据库
- 同步写入 CSV 文件 作为备份
总结:
实现统一采集、双通道输出,确保数据既结构化入库,又有备份保障。