文档章节

大数据技术核心之ETL

y
 yunpiao
发布于 2014/12/09 00:06
字数 2905
阅读 76
收藏 0
点赞 0
评论 0

 前几篇文章都是根据自己所见所知,在前人的基础上加以整合,对大数据概念有了初步的了解。接下来的四篇文章,抛开大数据的概念与基本知识,进入核心。我们从:数据采集、数据存储、数据管理、数据分析与挖掘,四个方面讨论大数据在实际应用中涉及的技术与知识点

核心技术

架构挑战:

1对现有数据库管理技术的挑战

2经典数据库技术并没有考虑数据的多类别(variety)、SQL(结构化数据查询语言),在设计的一开始是没有考虑到非结构化数据的存储问题

3实时性技术的挑战:一般而言,传统数据仓库系统,BI应用,对处理时间的要求并不高。因此这类应用通过建模,运行1-2天获得结果依然没什么问题。但实时处理的要求,是区别大数据应用和传统数据仓库技术、BI技术的关键差别之一。

4网络架构、数据中心、运维的挑战:随着每天创建的数据量爆炸性的增长,就数据保存来说,我们能改进的技术却不大,而数据丢失的可能性却不断增加。如此庞大的数据量存储就是首先面临的非常严峻的问题,硬件的更新速速将是大数据发展的基石,但效果确实不甚理想。

分析技术:

1数据处理:自然语言处理技术(NLP)

2统计和分析:A/B testtop N排行榜、地域占比、文本情感分析

3数据挖掘:关联规则分析、分类、聚类

4、模型预测:预测模型、机器学习、建模仿真

存储:

1结构化数据:海量数据的查询、统计、更新等操作效率低

2非结构化数据:图片、视频、wordPDFPPT等文件存储、不利于检索,查询和存储

3半结构化数据:转换为结构化数据存储、按照非结构化存储

解决方案:

1存储:HDFSHBASEHiveMongoDB

2并行计算:MapReduce技术

3流计算:twitterstormyahooS4

大数据与云计算:

1云计算的模式是业务模式,本质是数据处理技术

2数据是资产,云为数据资产提供存储、访问和计算

3当前云计算更偏重海量存储和计算以及提供的云服务,运行云应用。但是缺乏盘活数据资产的能力,挖掘价值性信息和预测性分析,为国家、企业、个人提供决策方案和服务,是大数据核心议题,也是云计算的最终方向。

大数据平台架构:

       我想这幅架构图,对大数据处理的人来说,应该不是很陌生。

       IaaS::基础设施即服务。基于 Internet 的服务(如存储和数据库)。

       PaaS:平台即服务。提供了用户可以访问的完整或部分的应用程序。

       SaaS:软件即服务。则提供了完整的可直接使用的应用程序,比如通过 Internet管理企业资源。


       这里也不多涉及这方面的概念,在接下来的几篇文章中,会对下图中相关的部分(主要介绍PaaS模块中涉及的部分)以及上面提及的技术挑战和相关技术的介绍。

提纲:

数据采集:ETL

数据存储:关系数据库、NoSqlSQL

数据管理:(基础架构支持)云存储、分布式文件系统

数据分析与挖掘:(结果展现)数据的可视化

 

本文章的目的,不是为了让大家对ETL的详细过程有彻底的了解。只需要知道,这是数据处理的第一步,一切的开端。

大数据技术之数据采集ETL:

       这里不过多的说数据采集的过程,可以简单的理解:有数据库就会有数据。

       这里我们更关注数据的ETL过程,而ETL前期的过程,只需要了解其基本范畴就OK

       在数据挖掘的范畴了,数据清洗的前期过程,可简单的认为就是ETL的过程。ETL的发展过程伴随着数据挖掘至今,其相关技术也已非常成熟。这里我们也不过多的探讨ETL过程,日后如有涉及,在细分。

概念:

       ETL(extract提取、transform转换、load加载)。ETL负责将分散的、异构数据源中的数据如关系数据、平面数据文件等抽取到临时中间层后,进行清洗、转换、集成,最后加载到数据仓库数据集市中,成为联机分析处理数据挖掘提供决策支持的数据

        ETL是构建数据仓库的重要的一环,用户从数据源抽取所需的数据,经过数据清洗,最终按照预先定义好的数据仓库模型将数据加载到数据仓库中。其定义域来源也不下于十几年,技术发展也应相当成熟。可乍眼一看,似乎并没有什么技术可言,也没有什么深奥之处,但在实际的项目中,却常常在这个环节上耗费太多的人力,而在后期的维护上,往往更费脑筋。导致上面的原因,往往是在项目初期没有正确的估计ETL的工作,没有认真的考虑其与工具支撑有很大的关系。

       在做ETL产品选型的时候,任然必不可少的要面临四点(成本、人员经验、案例和技术支持)来考量。在做ETL的过程中,也随之产生于一些ETL工具,如Datastage、Powercenter、ETLAutomation。而在实际ETL工具应用的对比上,对元数据的支持对数据质量的支持维护的方便性、定制开发功能的支持等方面是我们选择的切入点。一个项目,从数据源到最终目标表,多则达上百个ETL过程,少则也十几个。这些过程之间的依赖关系出错控制以及恢复的流程处理,都是工具需要重点考虑。这里不再多讨论,具体应用再具体说明。

过程:

       在整个数据仓库的构建中,ETL工作占整个工作的50%-70%。下面有人给出团队之间的ETL过程是如何实现的。在面临耗费绝大时间的分析过程中,要求第一点就是:团队协作性要好。ETL包含E,T,L还有日志的控制数据模型原数据验证数据质量等等方面。

       例如我们要整合一个企业亚太区的数据,但是每个国家都有自己的数据源,有的是ERP,有的是Access,而且数据库都不一样,好要考虑网络的性能问题,如果直接用ODBC去连接两地的数据源,这样的做法很显然是不合理的,因为网络不好,经常连接,很容易数据库链接不能释放导致死机。如果我们在各地区的服务器放置一个数据导出为access或者flat file的程序,这样文件就比较方便的通过FTP的方式进行传输。

下面我们指出上述案例需要的几项工作: 
      1、有人写一个通用的数据导出工具,可以用java,可以用脚本,或其他的工具,总之要通用,可以通过不同的脚本文件来控制,使各地区的不同数据库导出的文件格式是一样的。而且还可以实现并行操作。
      2、有人写FTP的程序,可以用bat,可以用ETL工具,可以用其他的方式,总之要准确,而且方便调用和控制。
      3、有人设计数据模型,包括在1之后导出的结构,还有ODS和DWH中的表结构。
      4、有人写SP,包括ETL中需要用到的SP还有日常维护系统的SP,比如检查数据质量之类的。
      5、有人分析原数据,包括表结构,数据质量,空值还有业务逻辑。
      6、有人负责开发流程,包括实现各种功能,还有日志的记录等等。 
      7、有人测试真正好的ETL,都是团队来完成的,一个人的力量是有限的。

      其实上述的7步,再给我们强调的是什么:一个人,很难成事。团队至上。

这里我们简述ETL的过程:主要从E、T、L和异常处理简单的说明,这里不再细说明。如果用到,我想大家一定会有更深的调研。

1、 数据清洗:

      ·数据补缺:对空数据、缺失数据进行数据补缺操作,无法处理的做标记。

      ·数据替换:对无效数据进行数据的替换。

      ·格式规范化:将源数据抽取的数据格式转换成为便于进入仓库处理的目标数据格式。

      ·主外键约束:通过建立主外键约束,对非法数据进行数据替换或导出到错误文件重新处理。

2、 数据转换

      ·数据合并:多用表关联实现,大小表关联用lookup,大大表相交用join(每个字段家索引,保证关联查询的效率)

      ·数据拆分:按一定规则进行数据拆分

      ·行列互换、排序/修改序号、去除重复记录

      ·数据验证:loolup、sum、count

实现方式:

      ·在ETL引擎中进行(SQL无法实现的)

      ·在数据库中进行(SQL可以实现的)

3、 数据加载

方式:

      ·时间戳方式:在业务表中统一添加字段作为时间戳,当OLAP系统更新修改业务数据时,同时修改时间戳字段值。

      ·日志表方式:在OLAP系统中添加日志表,业务数据发生变化时,更新维护日志表内容。

      · 全表对比方式:抽取所有源数据,在更新目标表之前先根据主键和字段进行数据比对,有更新的进行update或insert。

      ·全表删除插入方式:删除目标表数据,将源数据全部插入。

异常处理

      在ETL的过程中,必不可少的要面临数据异常的问题,处理办法:

      1、将错误信息单独输出,继续执行ETL,错误数据修改后再单独加载。中断ETL,修改后重新执行ETL。原则:最大限度接收数据。

      2、对于网络中断等外部原因造成的异常,设定尝试次数或尝试时间,超数或超时后,由外部人员手工干预。

      3、 例如源数据结构改变、接口改变等异常状况,应进行同步后,在装载数据。


       在这里涉及到ETL中,我们只要有一个清晰的认识,它不是想象中的简单一蹴而就,在实际的过程,你可以会遇到各种各样的问题,甚至是部门之间沟通的问题。在给它定义到占据整个数据挖掘或分析的过程中50%-70%是不足为过的。

       后期项目如有涉及ETL过程,会细细讨论。


© 著作权归作者所有

共有 人打赏支持
y
粉丝 2
博文 31
码字总数 71902
作品 0
海淀
阿里年薪50WJAVA工程师转大数据学习路线!

大数据有两个方向,一个是偏计算机的,另一个是偏经济的。你学过Java,所以你可以偏将计算机的。 Java程序员想转大数据可行吗?Java是全世界使用人数最多的编程语言。不少程序员选择Java做为...

JAVA丶学习 ⋅ 04/25 ⋅ 0

大数据行业就业指南:三大方向 十大职位

当下,大数据的趋势已逐步从概念走向落地,而在IT人跟随大数据浪潮的转型中,各大企业对大数据高端人才的需求也越来越紧迫。这一趋势,也给想要从事大数据方面工作的人员提供了难得的职业机遇...

柯西带你学编程 ⋅ 05/27 ⋅ 0

数据分析专家带你实战Quick BI

在2018云栖大会上,数据产品专家潘炎讲述了关于大数据可视化面临的挑战,并对Quick BI的核心能力进行了详细的刨析,最后对Qucik BI的未来发展做出了一定的规划。 数十款阿里云产品限时折扣中...

wanwlxmmd ⋅ 05/07 ⋅ 0

大数据架构师拿年薪50W的方法诀窍

什么是大数据架构师: 围绕大数据系平台系统级的研发人员, 熟练Hadoop、Spark、Storm等主流大数据平台的核心框架。深入掌握如何编写MapReduce的作业及作业流的管理完成对数据的计算,并能够...

daidaiweng ⋅ 04/12 ⋅ 0

大数据分析的下一代架构--IOTA

IOTA是什么?你是否为下一代大数据架构做好准备? 经过这么多年的发展,已经从大数据1.0的BI/Datawarehouse时代,经过大数据2.0的Web/APP过渡,进入到了IOT的大数据3.0时代,而随之而来的是数...

果树啊 ⋅ 05/02 ⋅ 0

相比于传统 BI,基于 Hadoop 的大数据(Big Data)战略有何不同?

作者:miao君 链接:https://www.zhihu.com/question/20357162/answer/142407798 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 可以参考这个问题的回答...

chenhao_asd ⋅ 04/23 ⋅ 0

阿里大数据架构师告诉你大数据工程师应具备怎样的知识体系?

大数据技术,最早于1980年被首次提及,却在近几年才获得突飞猛进的发展。相较于几十年前神经网络算法捉襟见肘的计算能力,如今处理器对大规模数据的高速处理能力无疑发挥了关键性的作用。 借...

嘿你好夏天 ⋅ 04/25 ⋅ 0

【大数据】Lambda架构已死,去ETL化的IOTA才是未来

经过这么多年的发展,已经从大数据1.0的BI/Datawarehouse时代,经过大数据2.0的Web/APP过渡,进入到了IOT的大数据3.0时代,而随之而来的是数据架构的变化。 ▌Lambda架构 在过去Lambda数据架...

np4rhi455vg29y2 ⋅ 04/14 ⋅ 0

大数据到底怎么学: 数据科学概论与大数据学习误区

数据科学家走在通往无所不知的路上,走到尽头才发现,自己一无所知。”-Will Cukierski,Head of Competitions & Data Scientist at Kaggle 最近不少网友向我咨询如何学习大数据技术?大数据怎...

wx5ad819330b785 ⋅ 05/19 ⋅ 0

蚂蚁金服同时斩获2018中国金融创新两大金融科技创新奖

小蚂蚁说: 中国金融创新论坛由《银行家》杂志社、中央电视台、中国社科学院金融研究所、中央财经大学共同举办,其中 “中国金融创新奖”由《银行家》杂志于2007年发起,至今已成功连续举办多...

兔子酱 ⋅ 06/07 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

熊掌号收录比例对于网站原创数据排名的影响[图]

从去年下半年开始,我在写博客了,因为我觉得业余写写博客也还是很不错的,但是从2017年下半年开始,百度已经推出了原创保护功能和熊掌号平台,为此,我也提交了不少以前的老数据,而这些历史...

原创小博客 ⋅ 52分钟前 ⋅ 0

LVM讲解、磁盘故障小案例

LVM LVM就是动态卷管理,可以将多个硬盘和硬盘分区做成一个逻辑卷,并把这个逻辑卷作为一个整体来统一管理,动态对分区进行扩缩空间大小,安全快捷方便管理。 1.新建分区,更改类型为8e 即L...

蛋黄Yolks ⋅ 今天 ⋅ 0

Hadoop Yarn调度器的选择和使用

一、引言 Yarn在Hadoop的生态系统中担任了资源管理和任务调度的角色。在讨论其构造器之前先简单了解一下Yarn的架构。 上图是Yarn的基本架构,其中ResourceManager是整个架构的核心组件,它负...

p柯西 ⋅ 今天 ⋅ 0

uWSGI + Django @ Ubuntu

创建 Django App Project 创建后, 可以看到路径下有一个wsgi.py的问题 uWSGI运行 直接命令行运行 利用如下命令, 可直接访问 uwsgi --http :8080 --wsgi-file dj/wsgi.py 配置文件 & 运行 [u...

袁祾 ⋅ 今天 ⋅ 0

JVM堆的理解

在JVM中,我们经常提到的就是堆了,堆确实很重要,其实,除了堆之外,还有几个重要的模块,看下图: 大 多数情况下,我们并不需要关心JVM的底层,但是如果了解它的话,对于我们系统调优是非常...

不羁之后 ⋅ 昨天 ⋅ 0

推荐:并发情况下:Java HashMap 形成死循环的原因

在淘宝内网里看到同事发了贴说了一个CPU被100%的线上故障,并且这个事发生了很多次,原因是在Java语言在并发情况下使用HashMap造成Race Condition,从而导致死循环。这个事情我4、5年前也经历...

码代码的小司机 ⋅ 昨天 ⋅ 1

聊聊spring cloud gateway的RetryGatewayFilter

序 本文主要研究一下spring cloud gateway的RetryGatewayFilter GatewayAutoConfiguration spring-cloud-gateway-core-2.0.0.RC2-sources.jar!/org/springframework/cloud/gateway/config/G......

go4it ⋅ 昨天 ⋅ 0

创建新用户和授予MySQL中的权限教程

导读 MySQL是一个开源数据库管理软件,可帮助用户存储,组织和以后检索数据。 它有多种选项来授予特定用户在表和数据库中的细微的权限 - 本教程将简要介绍一些选项。 如何创建新用户 在MySQL...

问题终结者 ⋅ 昨天 ⋅ 0

android -------- 颜色的半透明效果配置

最近有朋友问我 Android 背景颜色的半透明效果配置,我网上看资料,总结了一下, 开发中也是常常遇到的,所以来写篇博客 常用的颜色值格式有: RGB ARGB RRGGBB AARRGGBB 这4种 透明度 透明度...

切切歆语 ⋅ 昨天 ⋅ 0

CentOS开机启动subversion

建立自启动脚本: vim /etc/init.d/subversion 输入如下内容: #!/bin/bash## subversion startup script for the server## chkconfig: 2345 90 10# description: start the subve......

随风而飘 ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部