【作者主页】Francek Chen
【专栏介绍】 ⌈ ⌈ ⌈PySpark大数据分析与应用 ⌋ ⌋ ⌋ PySpark作为Apache Spark的Python API,融合Python易用性与Spark分布式计算能力,专为大规模数据处理设计。支持批处理、流计算、机器学习 (MLlib) 和图计算 (GraphX),通过内存计算与弹性数据集 (RDD) 优化性能,提供DataFrame API和SQL接口简化结构化数据处理。可跨Hadoop/云平台部署,适用于ETL、日志分析、实时推荐等场景,具备TB级数据横向扩展能力,并与Pandas等Python工具无缝集成,兼顾高效分析与易用性。
【GitCode】专栏资源保存在我的GitCode仓库:https://gitcode.com/Morse_Chen/PyTorch_deep_learning。
一、大数据的概念
- 国际期刊Nature和Science对大数据的贡献:首次正式提出“大数据”这一专有名词,首次综合分析了大数据对人类生活的影响,并详细描述了人类面临的数据困境。
- 麦肯锡全球研究院的定义:以数据规模是否能够被经典数据库及时处理来定义大数据,认为大数据是指数据规模大小超过经典数据库系统收集、存储、管理和分析能力的数据集。
- NIST的定义:具有规模巨大、种类繁多、增长速度快和变化频繁的特征,需要可扩展体系结构来有效存储、处理和分析的广泛数据集。
- IBM的定义:大数据的“4V”特性,即Volume(数量)、Variety(多样)、Velocity(速度)和Value(价值),后来又加入了Veracity(真实性),形成了大数据的“5V”特性。
大数据4V特性如下表。
特征 | 说明 |
---|---|
Volume(数量) | 当前典型计算机硬盘容量为TB量级,PB是大数据的临界点。据IDC预测,到2025年全球数据量将达到175ZB。 |
Variety(形式) | 数据类型包括结构化数据、半结构化和非结构化数据,如XML、邮件、博客、图片、音频、视频等。多样的数据类型对数据的整合、存储、分析和处理提出了更高要求。 |
Velocity(处理速度) | 现代传感技术、网络技术和计算机技术的发展使得数据的产生、存储、分析和处理的速度非常快。业界对大数据的处理能力有“1秒定律”的要求,即从数据产生到获取价值的时间应尽可能短。 |
Value(价值) | 由于大数据的规模不断扩大,单位数据的价值密度在降低,但整体数据的价值却在提高。例如,监控视频中可能只有一两秒的数据是有用的。许多学者和专家将大数据比作黄金和石油,表示其蕴含的巨大商业价值。 |
大数据以大体量、多样性、快速产生和处理以及低价值密度为主要特征。需要新的体系架构、技术、算法和分析方法来处理大数据。大数据是一个动态的定义,不同行业有不同的理解,衡量标准会随着技术的进步而改变。
二、大数据分析的概念
什么是大数据分析?大数据分析是指对规模巨大、海量的数据进行分析,挖掘数据蕴含的价值和知识。
大数据分析与传统数据分析的区别:传统的数据分析主要基于统计分析方法,而大数据分析则更侧重于预测性分析和预案性分析,处理大规模、多样性的复杂数据。
数据分析的目的:将隐藏在大量数据背后的信息集中和提炼出来,总结出研究对象的内在规律,帮助管理者进行判断和决策。
数据分析的四个层次:描述性分析、诊断性分析、预测性分析和预案性分析。
- 描述性分析描述数据特征的各项活动,包括频数分析、集中趋势分析、离散程度分析等。
- 诊断性分析用于获得事件发生的原因,寻找影响这些事件发生的因素。
- 预测性分析涵盖各种统计技术,如数据挖掘、机器学习等,用于对未来将要发生的事件进行预测。
- 预案性分析规定应该采取的行动,提供可以推理的结果,可以获得优势或降低风险。
大数据分析的思维方式转变: 全样而非抽样、混杂而非纯净、趋势而非精确、相关而非因果。
- 全样而非抽样。对所有相关数据进行分析,不再基于抽样样本进行随机分析。
- 混杂而非纯净。接收混杂的数据,不必担心某个数据点会对整套分析造成不利影响。
- 趋势而非精确。可以忽略微观层面上的精确度,在宏观层面上拥有更好的洞察力。
- 相关而非因果。寻找事物之间的相关关系,不探究因果关系。
三、大数据分析的流程
大数据分析源于业务需求,其完整的流程包括明确目的、数据采集与存储、数据预处理、分析与建模、模型评估以及可视化应用。
1. 明确目的
每个大数据分析项目都有独特的业务背景和需要解决的问题。在项目开始之前,应考虑数据对象、商业目的、业务需求等问题。只有深入理解业务背景,明确数据分析目的,并确定分析思路,才能确保数据分析过程的有效性。
2. 数据采集与存储
根据指标的分解结果,可以确定数据选取范围,并采集目标数据。采集的数据可以来自企业内部数据库中的历史数据、 Excel表格数据、文本文件以及实时数据等。此外,互联网和行业领域相关数据也是重要的数据来源。
3. 数据预处理
数据预处理是大数据处理中不可或缺的环节。为了获得可靠的数据分析和挖掘结果,必须利用数据预处理手段来提高大数据的质量,贯彻高质量发展精神。数据预处理包括数据合并、数据清洗、数据标准化、数据变换等。
4. 分析与建模
分析与建模是大数据处理的核心环节,涵盖了统计分析、机器学习、数据挖掘和模式识别等多个领域的技术和方法。在分析阶段,可以采用对比分析、分组分析、交叉分析和回归分析等方法。
5. 模型评估
评估是对模型进行全面评估的过程,包括建模过程评估和模型结果评估。具体来说,建模过程评估主要关注模型的精度、准确性、效率和通用性等方面;而模型结果评估则需要考虑是否有遗漏的业务问题,以及模型结果是否解决了业务问题。
6. 可视化应用
将分析结果以可视化的形式呈现。数据可视化的目标是以图形方式清晰、有效地展示信息。通过不同角度的可视化图形,人们可以更好地解读数据的本质,更直观地解释数据之间的特征和属性情况,并更深入地理解数据和数据所代表事件之间的关联。最终,将编写分析报告,并将分析结果应用于实际业务中,实现数据分析的真正价值——解决问题、创造商业价值并提供决策依据。
四、大数据分析的应用场景
大数据无处不在,应用于各行各业。个性化推荐、预测性分析是两个典型的应用场景。
1. 个性化推荐
大数据分析不仅能够帮助用户发现有价值的信息,还能将信息推荐给可能感兴趣的用户。例如,电子商务网站、社交网站的音乐、电影和图书推荐,以及媒体根据用户的品位和阅读习惯进行个性化推荐。
2. 预测性分析
预测性分析是大数据分析的核心应用之一。它基于大数据和预测模型预测未来某事件发生的概率。例如:
- 设备管理领域:通过物联网技术收集和分析设备上的数据流,建立设备管理模型,预测设备故障,以确保 设备正常作业。
- 交通物流分析领域:通过业务系统和全球定位系统(GPS)获得数据,对客户使用数据构建交通状况预测分析模型,有效预测实时路况、物流状况、车流量、客流量和货物吞吐量等,进而提前补货,制定库存管理策略。
- 公安机关、金融机构、电信部门的应用:公安机关、各大金融机构、电信部门等可以利用用户基本信息、用户交易信息、用户通话短信信息等数据,识别可能发生的潜在欺诈交易,做到未雨绸缪。
五、大数据技术体系
大数据技术包括大数据采集、存储、资源调度、计算、查询与应用分析等,典型的开源框架如下。
1. 大数据采集框架
负责从外部数据源采集数据,包括大数据收集、交换和消息处理等系统框架。典型框架:
- Flume:分布式海量日志采集、聚合和传输框架。作为非关系数据采集工具,Flume可近实时采集流式日志数据,经过滤、聚集后加载到Hadoop分布式文件系统(Hadoop Distributed File System,HDFS)等存储系统中。
- Sqoop:数据迁移工具框架,用于在关系数据库和Hadoop之间交换数据。利用Sqoop,可以将数据从MySQL、Oracle等关系数据库中导人Hadoop中,如HDFS、Hive中,也可以将数据从Hadoop导出到关系数据库中。
- Kafka:发布/订阅的消息系统框架,用于处理实时数据。作为分布式消息系统,Kafka可以处理大量的数据,能够将消息从一个端点传递到另一个端点,能够在离线和实时两种大数据计算架构中处理数据。
2. 大数据存储框架
负责对大数据进行存储。典型框架:
- HDFS:Hadoop的核心子项目,用于处理超大文件的需求,数据在相同节点上以复制的方式进行存储,以实现将数据合并计算的目的。
- Hbase:是一个分布式、面向列、高可靠性、高性能的分布式存储系统,适用于存储结构化和半结构化的稀疏数据。
- Cassandra:一种分布式NoSQL数据库,用于处理大量分布在多个数据中心的服务器上的数据。
- MongoDB:一个基于分布式文件存储的数据库,旨在为WEB应用提供可扩展的高性能数据存储解决方案等。
3. 大数据计算框架
大数据计算根据对时间性能要求分为批处理、交互式处理和实时处理。批处理对时间要求最低,一般要求处理时间为分钟到小时级别,甚至天级别,追求的是高吞吐率,即单位时间内处理的数据量尽可能大。交互式处理对时间要求比较高,一般要求处理时间为秒级别,这类框架需要与使用者进行交互,因此会提供类结构查询语言以便于用户使用。实时处理对时间要求最高,一般要求处理时间延迟在秒级以内。
典型计算框架:
- MapReduce:一个分布式的离线计算框架,用于海量数据的并行运算,是Hadoop数据分析的核心MapReduce框架使得开发人员在不会分布式并行编程的情况下,也可以将编写前业务逻辑代码运行在分布式系统上,开发人员可以将绝大部分的工作集中于业务逻上的开发,具体的计算只需要交给MapReduce框架即可。
- Spark:一栈式计算框架,适用于大规模数据处理,能更好地适用于数据挖掘与机器学习等需要迭代的算法中,高效地支持更多计算模式,包括交互式查询和流处理等。Spark是MapReduce的替代方案,是对Hadoop的补充,而且兼容HDFS、Hive,可融入Hadoop的生态系统,以弥补MapReduce的不足。Spark旨在成为运行批处理、数据流处理、交互处理、图形处理和机器学习等应用的整合平台。目前Spark已经成为大数据领域最热门的技术之一。
- Flink:一个开源的、适用于流处理和批处理的分布式数据处理框架,其核心是一个流式的数据流执行框架。Flink旨在成为运行批处理、数据流处理、交互处理、图形处理和机器学习等应用的一栈式平台。
- Storm:是一个开源的分布式实时大数据处理系统。Storm擅长实时处理海量数据,而非批处理。Storm用于在容错和水平可扩展方法中处理大量数据。
4. 资源调度框架
提高资源利用率、降低运营成本。典型框架:
- YARN:YARN(Yet Another Resource Negotiator)是Hadoop的资源管理和作业调度系统。作为Apache Hadoop的核心组件之一,YARN负责将系统资源分配给在Hadoop集群中运行的各种应用程序,并调度在不同集群节点上执行的任务。
- Mesos: 一个集群管理器,提供了有效的资源隔离和共享跨分布式应用。
5. 数据查询与分析框架
数据分析层直接与用户应用程序对接,为其提供易用的数据处理工具。为了让用户更轻松地分析数据,计算框架会提供多样化的工具,包括应用程序接口(Application Program Interface,API)、类SQL、数据挖掘软件开发工具包(Software Development Kit,SDK)等。典型的数据查询与分析框架有Hive、 Spark SQL、Mahout等。
- Hive:基于Hadoop的数据仓库工具,可以将结构化数据文件映射为一张数据库表,并提供类SQL语句的查询功能。Hive的优点在于学习成本低,可以通过HQL语句快速实现简单的MapReduce统计,而无需开发专门的MapReduce应用。
- Spark SQL:Spark的模块,用于处理结构化数据。
- Mahout:一个基于Hadoop之上的机器学习和数据挖掘的分布式框架。Mahout包含了许多实现,包括聚类、分类、推荐(过滤)、频繁子项挖掘,其中核心的三大算法为推荐、聚类及分类。
小结
大数据技术体系庞大且复杂,在学习过程中,我们应该培养解决问题的自主能力。遇到问题时,可第一时间利用搜索引擎寻找解决方案,学会独立解决问题,充分利用互联网资源。在参考资料的选择上,应优先查阅官方文档,以便获得最权威、最准确的信息。同时,我们需要深人理解各个技术的思想与原理,积极提问、勤于思考。例如:MapReduce是如何分而治之的策略的?HDFS数据到底存储在哪里,副本机制是如何工作的?YARN是什么,它的功能有哪些?Spark和Flink各自的优势和特点是什么?为什么Spark不能完全取代MapReduce?此外,我们还应该通过动手实践,来加深对大数据先进技术的理解,掌握大数据技术的精髓,走在时代前列,为国、为民服务。
欢迎 点赞👍 | 收藏⭐ | 评论✍ | 关注🤗