数据处理 Data Processing

目的

阅读完本章后,希望你可以明白如何选择合适自己的数据处理工具。如果您需要更多支持和帮助,欢迎随时联系我们: [email protected]

介绍

大数据时代,有企业内部积累的数据,有互联网和物联网不断产生的数据,也就对应着产生了不同的数据处理需求:批量处理Batch Processing,实时处理Realtime Processing, 准实时处理Near Realtime Processing。这些需求在Lambda Architecture中有不同的技术对应。

ETL: Extract, Transform, Load 传统数据处理

ETL,是英文 Extract-Transform-Load 的缩写,用来描述将数据从来源端经过抽取(extract)、转换(transform)、加载(load)至目的端的过程。ETL一词较常用在数据仓库,但其对象并不限于数据仓库。

数据处理的质量问题具体表现为正确性、完整性、一致性、完备性、有效性、时效性和可获取性等几个特性。而影响质量问题的原因有很多,由系统集成和历史数据造成的原因主要包括:业务系统不同时期系统之间数据模型不一致;业务系统不同时期业务过程有变化;旧系统模块在运营、人事、财务、办公系统等相关信息的不一致;遗留系统和新业务、管理系统数据集成不完备带来的不一致性。 实现ETL,首先要实现ETL转换的过程。体现为以下几个方面:

1、空值处理:可捕获字段空值,进行加载或替换为其他含义数据,并可根据字段空值实现分流加载到不同目标库。

2、规范化数据格式:可实现字段格式约束定义,对于数据源中时间、数值、字符等数据,可自定义加载格式。

3、拆分数据:依据业务需求对字段可进行分解。例,主叫号 861082585313-8148,可进行区域码和电话号码分解。

4、验证数据正确性:可利用Lookup及拆分功能进行数据验证。例如,主叫号861082585313-8148,进行区域码和电话号码分解后,可利用Lookup返回主叫网关或交换机记载的主叫地区,进行数据验证。

5、数据替换:对于因业务因素,可实现无效数据、缺失数据的替换。

6、Lookup:查获丢失数据 Lookup实现子查询,并返回用其他手段获取的缺失字段,保证字段完整性。

7、建立ETL过程的主外键约束:对无依赖性的非法数据,可替换或导出到错误数据文件中,保证主键唯一记录的加载。

常用ETL工具:

  • 商用:Informatica,IBM Cognos Data Manager
  • 开源:Pentaho Kettle,Talend ETL
Machine Learning: Classification, Clustering

常见的机器学习应用场景有亚马逊的商品推荐、Netflix的视频推荐、信用卡公司的反欺诈等。

Map Reduce:Word Count 大数据处理

学习

推荐书籍:

Mastering Machine Learning with scikit-learn Learning scikit-learn: Machine Learning in Python

ETL流程图:

常用机器学习库:

  • Python:Scikit
  • Spark:MLib

机器学习流程图:

实践

从互联网抓取数据的过程,其实也是ETL流程中的Extract。在数据抓取时,由于数据来源千差万别,很难直接把数据处理我们需要的最终数据,因此我们只能设置简单规则把所需的数据以字符串形式先存储下来形成原始数据(Raw Data)。数据抓取到后,要进行Transform把字符串数据转化为数字、日期等类型数据,保证数据的一致性和完整性,得到清理数据(Clean Data)。最后,我们把数据Load到数据库里,构造多维立方体(OLAP Cube),或使用其它工具分析,产生分析数据(Analytic Data)。

互联网数据由于没有统一的格式,因此对相关业务诉求可能存在数据缺失。例如,我们从不同的电商网站上抓取商品信息,有的网站会有商品类别信息Category,有的网站则没有。这时,需要我们使用机器学习算法,训练我们的模型,以使每个商品的类别信息可以通过模型识别准确补充进去。另外一个例子就是餐馆类别信息。我们拿到餐馆信息后,需要判断是中餐、西餐、日本餐等等,这时也可以通过机器学习的算法完成。

现在的数据分析,很多时候要求我们对文本进行处理。例如,我们希望知道一篇文章中出现词频最高的单词,或者我们想要知道一个用户最常访问的网站,这时我们就需要把文本映射成数字,然后在此基础上进行分析。这时需要用到大数据分析中的Map Reduce框架了。

我们以之前抓取到的 restaurants.json 为例:

{"ranking": "", "name": " Chop Chop Take Out\n ", "review_counts": ["2"], "url": "https://www.yelp.ca/biz/chop-chop-take-out-langley", "phone": " (604) 534-9922\n ", "address": " 20587 Fraser Highway Langley , BC V3A 4G4 \n ", "review_stars": ["3.5"]}

这里name、phone、address里含有字符‘\n’,在address中我们需要分拆city和postal code。我们先以Python为例做数据清洗和机器学习,然后再用大数据平台Spark同样处理。

小结


如果您有数据分析咨询实施的需求,欢迎随时和我们联系!

email:[email protected]


微信扫码支持
友情支持 自由赞助

results matching ""

    No results matching ""