声明:本文仅代表一家之言。
“单向”数据湖
业务用户对数据湖中数据感到一筹莫展,核心问题在于,湖中数据增长得越多,其分析难度也越大。因为数据被不断地推进湖中,分析报告却始终难产,这种规模可观的数据湖被戏虐为“单向”数据湖,数据只进不出。这样数据湖仅仅被当做一个倾斜数据的垃圾场。
“垃圾”数据湖至少有三个问题
(1)有用的数据对于分析师来说会变得难以发现,因为它们被掩藏在堆积如山的不相关信息后面;
(2)用来描述数据湖中数据个体的元数据(数据的数据)并没有被捕获或存放在一个能被访问到的地方;
(3)数据关系丢失或者从未被识别。
“真正的”数据湖
数据湖的四个基础组件:元数据(metadata)、整合图谱(integreation mapping)、语境(context)以及元过程(metaprocess)。
元数据
元数据是数据湖中用来对数据描述的一种数据,与初始数据(raw data)相对,元数据被分析师用于解密数据湖中的初始数据。假设数据中仅保留了初始数据,就像我们百度时,里面所有的文章(初始数据)没有关键词或者标题(元数据)。
整合图谱
整合图谱描述的是一种(或者一个应用程序)数据是如何与另一种(或者另一个应用程序)数据产生关联,以及数据间以什么样的逻辑被组合在一起,它是数据湖中数据如何被整合的详细规范。没有整合图谱的各个应用程序的数据投入到数据湖中会形成互不相干的“数据孤岛”(silo)。
语境
语境是针对文本数据而言的,脱离了上下文语境的文本是意义不明确的数据,例如,单词“court”,那么它究竟指的球场,还是法院呢?所以把文本放入数据湖的同时也要将文本所在的语境也放在其中,或者至少提供找到文本语境的方法。
元过程
元过程回答数据何时产生?数据何处产生?数据产生多少?数据由谁产生?数据如何被置入数据湖?数据是否被进一步处理过?等等,它是数据处理的信息。
数据湖数据类别
在数据湖中尽管能找到各种类型的数据,但这些仍然可以被分为三类。
- 模拟信号数据(analog data)
- 应用程序数据(application data)
- 文本数据(texture data)
模拟信号数据
模拟信号数据通常由机器或一些其他自动设备产生,即便并没有接入互联网,也可以产生数据,模拟信号数据巨量和重复的,通常,令人感兴趣的是那些微小的异常值(outliners),元过程在模拟你信号数据中显得尤为重要,例如测量温度数据,需要保存记录日期,记录地点,记录人,记录设备和其他附属信息,否则单独的一个温度数据毫无意义。
应用程序数据
应用程序数据由应用程序或者业务产生,并发送到数据湖。比如销售数据,支付数据、银行支票数据等等,这种整齐而均匀的结构大多以记录的形式出现。
文本数据
文本数据可以以任何形式出现,例如,人们交流,他们交流的内容中可以包含俚语、粗话,可以是正式的谈话或者是一些小圈子的笑话,所以这些文本依赖于语境内容,既不易查询,也不易于通过自动化手段处理。
数据池
在数据湖中创建高级的数据结构,当数据进入数据湖时,首先进入初始数据池,之后根据数据类型发送到三个不同的数据池中,模拟信号数据池、应用程序数据池和文本数据池,当数据在数据池内经历了它的生命周期步入终结,移入到归档数据池。当然,对于老道的开发者,将数据直接传入模拟数据池、应用程序数据池和文本数据池也是可行的。如图:
初始数据池
在初始数据池内,几乎没有分析或者其他数据活动,初始数据池就是许多机构最开始称之为数据湖的地方。一旦初始数据从初始数据池流入了数据池(模拟信号数据池、应用程序数据池和文本数据池),那么初始数据池中的那份数据是否还要保留?不!最好将它们从初始数据池中移除。保留数据量小,向外传递数据速度快是衡量初始数据池质量的一个重要标准。
模拟信号数据池
模拟信号数据池是存储模拟信号数据的地方,模拟信号数据从初始数据池流入模拟信号数据池前需要做数据修整,包括:数据缩减和数据整理等。
应用程序数据池
应用程序数据池,顾名思义是存储应用程序数据的地方,应用程序数据很可能是数据湖中“最干净”的数据了,因为它们可能具有一致性结构。尽管干净,流入应用程序数据池前,也需要对它们进行数据修整。
文本数据池
文本数据池是放置非结构化的文本数据的地方,这些数据很可能是数据湖中最难分析的数据了,为了做深度分析,文本通常需要经过数据消歧处理,
- 文本可以被转换成一致的数据库格式
- 文本的语境可以被识别出来,并将它关联到文本
归档数据池
归档数据池设计的目的是保存不常用于分析,在未来某个点可能会被用到的数据。
数据池结构
每一个数据池(初始数据池除外)都包含以下结构
- 数据池描述
- 数据池目标
- 数据池数据
- 数据池元数据
- 数据池元过程信息
- 数据池转换标准
参考文献
数据湖架构-Data Lake Architecture. Bill Inmon.