大数据与机器学习:实践方法与行业案例1.1 数据的基本形态

迟序之数,非出神怪,有形可检,有数可推。

—祖冲之

数学是知识的工具,亦是其他知识工具的泉源。所有研究顺序和度量的科学均和数学有关。

—笛卡儿

 

对于大部分非计算机专业出身的分析人员和业务人员来说,数据库领域的专业术语简直让人抓狂,非要搞得那么高深吗?大可不必。

数据科学家是数据的应用者,以最大限度来提炼数据价值为目的,不必像数据仓库开发者那样对数据的存储、结构以及数据仓库的内生技术一清二楚,但应该站在找到数据、拼接数据、使用数据的角度,大体了解数据的分布、处理逻辑,以便为分析快速地准备素材。


 摘要


数据与数据平台

合抱之木,生于毫末;九层之台,起于垒土;千里之行,始于足下。

—《老子》

世界的本质是数。

—毕达哥拉斯

数据时时刻刻在伴随着我们的工作和生活,就像空气围绕着我们一样,以致于我们常常忽略了它的存在。但如果你立志做一个崇尚数据的人,静下心来像科学家研究空气一样研究数据,就会发现数据为我们认知事物打开了一条全新的途径。

可以通过数据认识自身:人类全身的肌肉大约有639块,由60亿条肌纤维构成,而起着重要作用的大脑则由140亿个细胞构成。

可以通过数据描述我们的工作:周一上午10:00~11:30召开会议,讨论公司第三季度的销售目标。

可以通过数据描述我们的行为:花费6088元购买一台iPhone 6手机,中速游泳60分钟消耗约1000千卡的热量。

还可以通过数据认识我们所处的环境:现在时间是14:00,当前温度为28℃,上个月的CPI同比上涨1.4%,蔬菜和水果价格上涨了6.7%。

甚至可以通过数据认识遥不可及的物体:太阳直径为1 392 000公里,表面温度达57 809开尔文……数据让我们认识了世间万物,那么我们该如何认识数据本身呢?

数据的本质是一个十分深奥且宽泛的话题,甚至带有哲学的意味。作为技术类书籍,本书不尝试从哲学的角度研究数据,而是基于实践,从思维和技术手段出发来认识、理解、处理并分析周围的数据。为了更加具体,本书研究的数据定位于企业经营数据。

本章首先将从数据的基本形态入手,介绍企业中数据的来源和表现形态;然后介绍与之相关的数据平台,并简单介绍两类应用系统。在着手处理数据之前,让我们先对数据有一个清晰的认识。


1.1 数据的基本形态


我们不是自然科学家,但是可以借鉴自然科学的思路来看待数据问题。问题是数据具有形态吗?虽然数据并不具有固态、液态或气态等形态,但是可以根据需要为数据定义属于自己的专属形态。

一旦为数据赋予了恰当的形态,并在一定范围内(比如在一个公司内部)达成共识,形成对数据的系统化认识,就可以基于这些数据形态提出相应的管理和使用方案,提升数据的效率和价值。

一般情况下,对于企业经营中产生的数据,可以定义为三种形态:生产数据、原始数据和分析数据。这些数据形态的产生,是基于企业应用系统所在的生产环境和分析环境而存在的,在深入讨论数据形态之前,我们先来熟悉一下数据所在的环境。

1.1.1 数据环境与数据形态

数据环境是指数据存储、处理、转换所处的物理环境,常见的数据环境有生产环境、分析环境和测试环境。

生产环境是生产应用系统实时运行所在的环境,而生产应用系统则是一系列业务逻辑的组合。我们可以把生产环境想象成人的身体,生产应用系统就是人体中的各个系统(消化系统、呼吸系统等),业务逻辑则是这些系统中的“经络”,而数据便是运行于经络之中的“气血”。数据从“经络”中的一个“穴位”流转到另一个“穴位”,并在“流淌”中发生变化,所以,生产环境中的数据是“动态变换”的数据,我们称为生产数据。

分析环境是与生产环境物理解耦的一个数据环境。在生产环境中,由于数据总是处于不停变化中,这些数据的变化将直接反映为业务逻辑结果的变化,因此不应该尝试在生产环境中对数据进行分析处理。为了不影响生产环境的正常运行,需要将生产环境中的“动态”数据的快照保存下来(例如每日凌晨将时间戳为昨日的数据导出),这些数据快照是“静态”的,我们称为分析数据,保存分析数据的物理环境即我们所说的分析环境。

在实际中,还有另外一个环境,即测试环境。测试环境中的数据也是独立于生产环境和分析环境的,由于测试环境的数据通常不是有效的数据,因此本书不关注测试环境的数据。

至此,根据数据所处的环境,我们将数据定义为三种基本形态:生产数据、原始数据和分析数据。

生产数据存在于生产环境之中,分析数据存在于分析环境之中。此外,在生产数据和分析数据之间,还存在一种过渡形态的数据,即原始数据。图1-1展示了数据环境及其对应的数据形态。

 

图1-1 数据环境及其对应的数据形态

注意,图1-1中所示的原始数据,既不属于生产环境也不属于分析环境,这意味着它不直接用于生产,也不直接用于分析。原始数据作为生产数据到分析数据的中间形态存在,本书随后的章节将进一步讨论原始数据的相关问题。

1.1.2 生产数据

生产数据是应用系统中在线使用的数据,它可能是一个生产系统的生产环境数据库中的数据,比如在一个P2P借贷平台的系统中,用户进行注册、充值、投资等行为产生的数据将被记录到生产环境数据库中,这些数据即为生产数据。

生产数据是动态的,会随着业务应用的变化而变化,比如用户账户余额数据,会随着用户投资的变化而变化。任何存在于生产环境中的数据,都在时刻准备发生改变,只不过有些生产数据的变化频率特别低而已,比如用户的年龄信息。

正常情况下,数据分析师并不直接接触生产数据,但需要注意的是,有些生产数据是从分析数据而来的。比如用户标签数据,它本身是从分析数据构建的,属于分析数据。但这些标签数据一旦用于应用系统,例如作为推荐系统的底层数据,即转化为生产数据,这种情况下,应用系统输出结果的质量将受到分析数据的直接影响。

1.1.3 原始数据

由于生产数据是动态的数据,而过去大量的分析工具和分析方法很难处理动态改变的数据(流处理已经改变了这种情况)。为了在不影响生产应用系统的情况下分析和处理这些数据,我们需要将这些数据从生产系统解耦。

从生产系统解耦的数据即是原始数据。数据解耦的过程一般包括数据脱敏(如屏蔽电话号码、去除住宅详细信息等)、信息筛选(抛弃不需要的字段)、批量导出(如在T日凌晨批量导出T-1日的交易明细数据)等。

原始数据可以以多种形式存在,例如存储在生产数据库备库中,或者以文本文件的格式存放在文件服务器中。无论以何种形式存在,原始数据都应该独立于生产环境和分析环境,这可以避免分析环境对生产环境的干扰。

存放这些原始数据的地方,我们称为数据缓冲区。在很多企业中,数据缓冲区和原始数据并未得到足够重视,它们大多为了前期的方便,省略了数据缓冲区和原始数据形态,就像图1-2所示的那样。

显然,数据直连的方式让生产环境直接暴露在分析环境之上,两者之间的ETL(Extract-Transform-Load)过程将对双方的性能造成影响。随着数据量的增加,这可能会带来数据管理和应用上的灾难。

 

图1-2 省略数据缓冲区的数据直连

本书极力推荐图1-1所示的方式,虽然它比图1-2要复杂,但在数据管理和可扩展性方面有非常大的优势。后面的第2.1节中会深入讨论该问题。

1.1.4 分析数据

分析数据是对原始数据进行属性筛选、标准统一之后,使用优化存储的方式存放于分析环境中的数据。从原始数据到分析数据的关键步骤在于ETL过程。

比如,原始数据中的一张表A可能包含100个字段,经过ETL之后,得到了一个包含45个字段的表B,其中的日期格式进行了统一,且滤除了一些特殊字符,并将表B存放于分析环境数据平台的关系数据库Oracle中。这样,原始数据中的表A完成了属性筛选和标准统一(日期格式),转换成了分析数据表B。

另一种需要标准统一的情景根源于原始数据本身的多样性。由于原始数据来源于不同的生产应用系统,其数据格式及字段含义均存在差异。例如,原始数据存放的格式可能有Windows文本、Linux文本、主机格式文本、数据库文件等多种形式;字段含义上的差异则更加多样,比如,由原始数据文件A中性别字段使用1表示男性、2表示女性,而原始数据文件B中性别字段使用M表示男性、F表示女性。通过标准统一,可以约定所有的分析数据统一使用1表示男性、2表示女性。数据统一可为数据分析和数据应用铺平道路。

经过ETL之后的分析数据,为了进一步提高存储效率和读取效率,需要使用技术手段进行存储优化,比如创建索引、进行分区、分表存储、使用大数据平台等。

通过对原始数据的提炼和优化,分析数据具有了信息集中、标准统一、分析效率高等特点,便于数据进一步的分析和应用。

分析数据需要依托数据平台而存在,数据平台的性能对其上的数据分析和应用有决定性影响。数据平台是分析环境的基础,在随后的“数据平台”章节中,我们将详细介绍。

时间: 2024-06-16 08:16:00

大数据与机器学习:实践方法与行业案例1.1 数据的基本形态的相关文章

大数据与机器学习:实践方法与行业案例.1.2数据平台

1.2数据平台 数据平台是存放分析数据的平台,也是支持大多数数据分析和数据挖掘应用的底层平台,它使用了统一的数据清洗与处理规则,因而可以保证从基础平台上输出的数据内容是一致的. 传统的数据平台基本等同于大家熟悉的"数据仓库",但互联网浪潮让人们对数据采集.存储和应用提出了越来越高的要求,传统数据仓库平台独力难支,因此"现代化"的数据平台是多种数据库产品的融合.图1-3是一个精简化的现代数据平台架构图.   图1-3 数据平台架构示意图 现代的数据平台融合了传统数据仓

大数据与机器学习:实践方法与行业案例.2.2 数据缓冲区

2.2 数据缓冲区 数据缓冲区是处于生产环境和分析环境之间的中间区域,它是数据闭环中各个系统间的数据中转站,从各个系统接收原始数据,并将其暂存在对应的目录中.其他系统可以从数据缓冲区中获取需要的数据文件. 为了便于管理和迁移数据,我们规定存入数据缓冲区中的数据使用文本文件的格式,这样一来,数据缓冲区就可以使用一台或几台文件服务器实现.几乎所有的应用系统都支持文本文件的数据交互,新的系统可以轻松加入数据闭环之中. 数据缓冲区的一端连接生产环境中的大量应用系统,另一端连接分析环境中的数据平台,避免了

大数据与机器学习:实践方法与行业案例.1.1 数据的基本形态

数据与平台篇 (Data & Infrastructures) 迟序之数,非出神怪,有形可检,有数可推. -祖冲之 数学是知识的工具,亦是其他知识工具的泉源.所有研究顺序和度量的科学均和数学有关. -笛卡儿   对于大部分非计算机专业出身的分析人员和业务人员来说,数据库领域的专业术语简直让人抓狂,非要搞得那么高深吗?大可不必. 数据科学家是数据的应用者,以最大限度来提炼数据价值为目的,不必像数据仓库开发者那样对数据的存储.结构以及数据仓库的内生技术一清二楚,但应该站在找到数据.拼接数据.使用数据

大数据与机器学习:实践方法与行业案例.3.2 自动加载的流程

3.2 自动加载的流程 既然已经明确了数据缓冲区的基本规则,那么我们认为一个满足规则要求的数据缓冲区已经搭建起来了(可以向IT运维人员提出搭建FTP文件服务器的需求),接下来真正进入数据自动加载的设计过程. 首先,仔细分析文件从数据缓冲区自动加载到分析环境中的流程,可以将这个过程细分为4个阶段:扫描文件.下载文件.解压文件和加载文件,如图3-4所示.   图3-4 文件自动加载流程分解 这4个阶段的功能描述如下. 1)扫描文件.该阶段用于判断当前数据日期的文件是否已经完整存在于数据缓冲区中,一旦

大数据与机器学习:实践方法与行业案例.2.1 数据闭环

第2章 数 据 体 系 迟序之数,非出神怪,有形可检,有数可推.事类相推,各有攸归,故枝条虽分而同本干知,发其一端而已.又所析理以辞,解体用图,庶亦约而能周,通而不黩,览之者思过半矣. -刘徽<九章算术注> 管理就是决策. -赫伯特·西蒙 数据存在于生产环境.数据缓冲区以及分析环境的各个节点中,并且由各种技术手段支撑着数据的存储和计算.通常,在企业中,生产环境由开发部门负责,而分析环境和数据缓冲区则由数据部门负责,物理环境分离以及管理上的隔离会让人们产生一种错觉:数据是数据部门的事情,应用系统

大数据与机器学习:实践方法与行业案例.1.3 应用系统

1.3 应用系统 前面已经为数据定义了三种基本形态,并认识了各种数据平台.从图1-1中还可以看到,原始数据主要是由应用系统产生的.作为数据的源头,我们有必要从数据的角度重新认识应用系统. 从数据角度看,应用系统可以分为两类:业务驱动的应用系统和数据驱动的应用系统,如图1-18所示.   图1-18 应用系统的分类 业务驱动的应用系统侧重于业务逻辑的处理,数据是业务逻辑运行的直接结果,它不依赖于现有数据.例如,信用卡交易系统即是一个业务驱动的应用系统,持卡人每一次刷卡消费(触发业务逻辑),都会产生

大数据与机器学习:实践方法与行业案例.2.3 ETL

2.3 ETL ETL是Extract-Transform-Load的缩写,是数据的抽取.转换.加载过程,当需要将数据从一个环境转移到另一个环境时(例如从生产环境到分析环境),或者需要对数据进行进一步加工处理时(例如在分析环境中,在数据仓库基础上产出每日交易量指标),即需要借助ETL过程. ETL是构建数据闭环自循环过程的重要途径,几乎每个环节均可以通过ETL来完成.通过专门的ETL工具,定制满足业务要求的ETL作业,并结合自动调度工具,即可以实现数据的自动循环. 2.3.1 ETL工具 目前国

大数据与机器学习:实践方法与行业案例.2.6 本章小结

2.6 本章小结 本章围绕数据体系提出了数据闭环的概念,对数据闭环的特征进行了描述,并且进一步介绍了构建数据闭环所涉及的方法和技术. 这里着重介绍了在数据闭环中扮演重要作用的"数据缓冲区"的设立理念和实现方式.通过设立数据缓冲区,可以实现系统解耦,让数据闭环具备良好的扩展性,让公司组织间职责更加分明,使数据环境更加安全等. 数据缓冲区中涉及的数据批量导出/导入技术,需要使用到各个RDMS系统的批量操作命令.另外在大数据平台中,需要使用hadoop shell和hive shell脚本来

大数据与机器学习:实践方法与行业案例.3.3 自动加载程序的数据库设计

3.3 自动加载程序的数据库设计 根据之前的设计,自动加载程序需要从数据库配置表中获取配置信息,并不断更新相关的状态,表3-2列出了自动加载程序需要的所有配置表. 表3-2 自动加载程序的配置表 表 名 中文名称 用 途 file_settings 数据文件信息表 存储数据文件名称.日期等配置信息 file_status 数据文件状态表 存储数据文件的状态 load_config 加载配置信息表 存储数据库中表的相关信息 ftp_server 数据缓冲区信息表 存储数据缓冲区文件服务器的相关信息