Spark 应用分析
Spark 作为一个流批一体的大数据处理框架,他的作用无外乎三个:
- 大数据处理 ETL (Data → Data)
- 大数据分析 BI (Data → Dashboard)
- 机器学习 AI (Data → Model)
何为ETL?
这里引用 IBM 的解释
ETL(提取、转换、加载)
ETL 是一个从多个来源提取、转换和加载数据到数据仓库或其他统一数据存储库的过程。
ETL 代表提取、转换和加载,是一种数据集成过程,它将来自多个数据源的数据组合到一个单一的、一致的数据存储中,然后再加载到 数据仓库 或其他目标系统中。
随着数据库在 1970 年代的普及,ETL 被引入作为集成和加载数据以进行计算和分析的过程,最终成为数据仓库项目处理数据的主要方法。
ETL 为数据分析和机器学习工作流提供了基础。通过一系列业务规则,ETL 以解决特定商业智能需求的方式清理和组织数据,例如月度报告,但它还可以处理更高级的分析,从而改善后端流程或最终用户体验。组织通常使用 ETL 来:
- 从遗留系统中提取数据
- 清理数据以提高数据质量并建立一致性
- 将数据加载到目标数据库
因为大数据时代数据充满了不确定性,极高的冗余度,数据的错误等等,用普通的方式很难在成吨数据中提取出我们真正想要的数据,所以 ETL 由此诞生。
ETL的流程也如其名:Extract, Transform, Load
提炼
在数据提取过程中,原始数据会从源位置复制或导出到暂存区。数据管理团队可以从各种数据源中提取数据,这些数据源可以是结构化的或非结构化的。这些来源包括但不限于:
- SQL 或 NoSQL 服务器
- CRM和ERP系统
- 平面文件
- 电子邮件
- 网页
转换
在暂存区,对原始数据进行数据处理。在这里,数据被转换和整合以用于其预期的分析用例。此阶段可能涉及以下任务:
- 过滤、清理、重复数据删除、验证和验证数据。
- 根据原始数据执行计算、转换或汇总。这可以包括更改行和列标题以保持一致性、转换货币或其他计量单位、编辑文本字符串等。
- 进行审计以确保数据质量和合规性
- 删除、加密或保护由行业或政府监管机构管理的数据
- 将数据格式化为表或连接表以匹配目标数据仓库的架构。
加载
在这最后一步中,转换后的数据从暂存区移动到目标数据仓库。通常,这涉及到所有数据的初始加载,然后是定期加载增量数据更改,并且不太常见的是完全刷新以擦除和替换仓库中的数据。对于大多数使用 ETL 的组织而言,该过程是自动化的、定义明确的、连续的和批处理驱动的。通常,ETL 发生在源系统和数据仓库上的流量最低的非工作时间。
ETL 工具
Datastage
IBM公司的商业软件,最专业的ETL工具,但同时价格不菲,适合大规模的ETL应用。
Informatica
商业软件,相当专业的ETL工具。价格上比Datastage便宜一点,也适合大规模的ETL应用。
Kettle
免费,最著名的开源产品,是用纯java编写的ETL工具,只需要JVM环境即可部署,可跨平台,扩展性好。
三种 ETL 工具比较
1、操作
这三种ETL工具都是属于比较简单易用的,主要看开发人员对于工具的熟练程度。
Informatica有四个开发管理组件,开发的时候我们需要打开其中三个进行开发,Informatica没有ctrl+z的功能,如果对job作了改变之后,想要撤销,返回到改变前是不可能的。相比Kettle跟Datastage在测试调试的时候不太方便。Datastage全部的操作在同一个界面中,不用切换界面,能够看到数据的来源,整个job的情况,在找bug的时候会比Informatica方便。
Kettle介于两者之间。
2、部署
Kettle只需要JVM环境,Informatica需要服务器和客户端安装,而Datastage的部署比较耗费时间,有一点难度。
3、数据处理的速度
大数据量下Informatica与Datastage的处理速度是比较快的,比较稳定。Kettle的处理速度相比之下稍慢。
4、服务
Informatica与Datastage有很好的商业化的技术支持,而Kettle则没有。商业软件的售后服务上会比免费的开源软件好很多。
5、风险
风险与成本成反比,也与技术能力成正比。
6、扩展
Kettle的扩展性无疑是最好,因为是开源代码,可以自己开发拓展它的功能,而Informatica和Datastage由于是商业软件,基本上没有。
7、Job的监控
三者都有监控和日志工具。
在数据的监控上,个人觉得Datastage的实时监控做的更加好,可以直观看到数据抽取的情况,运行到哪一个控件上。这对于调优来说,我们可以更快的定位到处理速度太慢的控件并进行处理,而informatica也有相应的功能,但是并不直观,需要通过两个界面的对比才可以定位到处理速度缓慢的控件。有时候还需要通过一些方法去查找。
8、网上的技术文档
Datastage < Informatica < kettle,相对来说,Datastage跟Informatica在遇到问题去网上找到解决方法的概率比较低,kettle则比较多。
何为BI?
定义 维基百科
商业智能(Business Intelligence, BI),指用现代数据仓库技术、在线分析处理技术、数据挖掘和资料展现技术进行资料分析以实现商业价值
商业智能的概念经由Howard Dresner(1989年)的通俗化而被人们广泛了解。当时将商业智能定义为一类由数据仓库(或信息市集)、查询报表、资料分析、数据挖掘、资料备份和恢复等部分组成的、以帮助企业决策为目的技术及其应用。
目前,商业智能通常被理解为将企业中现有的资料转化为知识,帮助企业做出明智的业务经营决策的工具。这里所谈的数据包括来自企业业务系统的订单、库存、交易账目、客户和供应商资料及来自企业所处行业和竞争对手的资料,以及来自企业所处的其他外部环境中的各种资料。而商业智能能够辅助的业务经营决策既可以是作业层的,也可以是管理层和策略层的决策。
商业智能可以定义为一系列商业活动行为的资料收集与信息转化作业,透过持续性的过程,搭配技术进行测量、管理与监测,能够容易分析、综合营运及策略的定量化信息应用,即时且交互的对企业的关键性的衡量指针进行评估,进而发觉企业面临的潜在问题或机会,促使用户能够运用大量而完整的信息,进行交叉分析并了解其中趋势,协助企业制订出最佳的策略主题与策略目标的一种决策支持的工具。
BI技术运用
- 数据分析
Power BI (页面存档备份,存于互联网档案馆), Tableau (页面存档备份,存于互联网档案馆), Smart eVision(页面存档备份,存于互联网档案馆)
- 数据仓储
Teradata Aster Data (页面存档备份,存于互联网档案馆), EMC GreenPlum (页面存档备份,存于互联网档案馆), HP Vertica (页面存档备份,存于互联网档案馆) }}
- 数据集市
QlikView(页面存档备份,存于互联网档案馆), DataFocus(页面存档备份,存于互联网档案馆), Tableau, Yonghong Data Mart
- 数据采集
Kettle
- OLAP(分布式数据分析)
- 决策支持系统
企业导入BI的优点
- 随机查询动态报表
- 掌握指针管理
- 随时在线分析处理
- 可视化之企业仪表版
- 协助预测规划
导入BI的目的
促进企业决策流程(Facilitate the Business Decision-Making Process):BIS增进企业的信息集成与信息分析的能力,汇总公司内、外部的资料,集成成有效的决策信息,让企业经理人大幅增进决策效率与改善决策质量。
降低整体营运成本(Power the Bottom Line):BIS改善企业的信息获取能力,大幅降低IT人员撰写程序、Power user制作报表的时间与人力成本,而弹性的模块设计接口,完全不需撰写程序的特色也让日后的维护成本大幅降低。
协同组织目标与行动(Achieve a Fully Coordinated Organization):BIS加强企业的信息传播能力,消除信息需求者与IT人员之间的认知差距,并可让更多人获得更有意义的信息。全面改善企业之体质,使组织内的每个人目标一致、齐心协力。
何为 AI ?
定义 维基百科
人工智能(英语:artificial intelligence,缩写为AI)亦称智械、机器智能,指由人制造出来的机器所表现出来的智能。通常人工智能是指通过普通计算机程序来呈现人类智能的技术。该词也指出研究这样的智能系统是否能够实现,以及如何实现。同时,通过医学、神经科学、机器人学及统计学等的进步,常态预测则认为人类的很多职业也逐渐被其取代。[1][2]
人工智能于一般教材中的定义领域是“智能主体(intelligent agent)的研究与设计”[3],智能主体指一个可以观察周遭环境并作出行动以达致目标的系统[4]。约翰·麦卡锡于1955年的定义是[5]“制造智能机器的科学与工程”[6]。安德烈亚斯·卡普兰(Andreas Kaplan)和迈克尔·海恩莱因(Michael Haenlein)将人工智能定义为“系统正确解释外部数据,从这些数据中学习,并利用这些知识通过灵活适应实现特定目标和任务的能力”。[7] 人工智能可以定义为模仿人类与人类思维相关的认知功能的机器或计算机,如学习和解决问题。人工智能是计算机科学的一个分支,它感知其环境并采取行动,最大限度地提高其成功机会。此外,人工智能能够从过去的经验中学习,做出合理的决策,并快速回应。因此,人工智能研究人员的科学目标是通过构建具有象征意义的推理或推理的计算机程序来理解智能。人工智能的四个主要组成部分是:
- 专家系统:作为专家处理正在审查的情况,并产生预期或预期的绩效。
- 启发式问题解决:包括评估小范围的解决方案,并可能涉及一些猜测,以找到接近最佳的解决方案。
- 自然语言处理:在自然语言中实现人机之间的交流。
- 计算机视觉:自动生成识别形状和功能的能力 [8]。
人工智能的研究是高度技术性和专业的,各分支领域都是深入且各不相通的,因而涉及范围极广[9]。人工智能的研究可以分为几个技术问题。其分支领域主要集中在解决具体问题,其中之一是,如何使用各种不同的工具完成特定的应用程序。
AI的核心问题包括建构能够跟人类似甚至超卓的推理、知识、规划、学习、交流、感知、移物、使用工具和操控机械的能力等[10]。人工智能目前仍然是该领域的长远目标[11]。目前弱人工智能已经有初步成果,甚至在一些影像识别、语言分析、棋类游戏等等单方面的能力达到了超越人类的水平,而且人工智能的通用性代表着,能解决上述的问题的是一样的AI程序,无须重新开发算法就可以直接使用现有的AI完成任务,与人类的处理能力相同,但达到具备思考能力的统合强人工智能还需要时间研究,比较流行的方法包括统计方法,计算智能和传统意义的AI。目前有大量的工具应用了人工智能,其中包括搜索和数学优化、逻辑推演。而基于仿生学、认知心理学,以及基于概率论和经济学的算法等等也在逐步探索当中。
在此三个领域中,看似都跟Spark没有什么关系,唯一一个看似有关系的ETL也有较为成熟的ETL工具,可视化的操作,上手比较快,但是对于数据量上升导致性能出问题,可优化的空间就不是很大了,毕竟底层人家都已经帮你封装好了,对于大量的数据,ETL工具就显得力不从心了,因为,所以还需要Spark对数据处理
在BI领域同样的,也会有此类问题,只是问题较少,因为BI分析大多为企业内部展示,可以预先规划时间并处理好数据
在AI领域,Spark 的ML框架对于大数据学习有着很强的增补,N卡GPU 也可加速 Apache Spark 3 数据科学管道,加快数据处理和模型训练速度,同时大幅降低基础设施成本。ML框架也集成了较为先进的机器学习算法:逻辑回归,朴素贝叶斯,线性回归,SVM,决策树,LDA,矩阵分解 等