您现在的位置:首页 > 课程体系 > 大数据与人工智能 > 大数据系列
Spark基本原理概述(附教程)


Spark快速、灵活且对开发人员友好,是大规模SQL、批处理、流处理和机器学习的领先平台。

 

Spark框架概述


 

Apache Spark是一个数据处理框架,可以在非常大的数据集上快速执行处理任务,也可以单独或与其他分布式计算工具协同在多台计算机上分配数据处理任务。这两个品质是大数据和机器学习世界的关键,这需要大量的计算能力来处理大型数据存储。Spark还通过一个易于使用的API将分布式计算和大数据处理的大量繁重工作抽象化,减轻了开发人员的一些编程负担。

Spark可以通过多种方式进行部署,为Java、Scala、Python和R编程语言提供本地绑定,并支持SQL、流数据、机器学习和图形处理。你会发现它被银行、电信公司、游戏公司、政府以及苹果、IBM、Meta和微软等所有主要科技巨头使用。因此对于数据行业的工作者来说,它是一项广泛应用的技术。

 

如果您寻求学习大数据中的核心技术,则推荐您在中培IT学院了解大数据挖掘、可视化与ChatGPT职场赋能课程,课程中对包括Spark、Pandas等框架在内的技术进行了深入的教学。

 

Spark弹性分布式数据集

Spark的核心是弹性分布式数据集(RDD)的概念,RDD是一种编程抽象,表示可以跨计算集群拆分的不可变对象集合。RDD上的操作也可以跨集群拆分,并在并行批处理中执行,从而实现快速和可扩展的并行处理。Apache Spark将用户的数据处理命令转换为定向非循环图(DAG)。DAG是Apache Spark的调度层;它确定在哪些节点上执行哪些任务以及以何种顺序执行。

RDD可以从简单的文本文件、SQL数据库、NoSQL存储(如Cassandra和MongoDB)、AmazonS3存储桶等创建。Spark Core API的大部分构建在这个RDD概念上,支持传统的映射和reduce功能,但也提供了对连接数据集、过滤、采样和聚合的内置支持。

Spark通过组合驱动程序核心进程以分布式方式运行,该驱动程序核心流程将Spark应用程序划分为多个任务,并将它们分布在执行工作的多个执行器进程中。这些执行器可以根据应用程序的需要上下扩展。

 

 

Spark SQL

Spark SQL对Apache Spark项目变得越来越重要。它是当今开发人员在创建应用程序时最常用的接口。Spark SQL专注于结构化数据的处理,使用从R和Python(在Pandas中)借用的数据帧方法。但顾名思义,Spark SQL还为查询数据提供了一个符合SQL2003的接口,为分析师和开发人员带来了Apache Spark的强大功能。

 

除了标准SQL支持外,Spark SQL还提供了一个标准接口,用于读取和写入其他数据存储,包括JSON、HDFS、Apache Hive、JDBC、Apache-ORC和Apache-Parquet,所有这些都是现成的。其他流行的数据存储Apache Cassandra、MongoDB、Apache HBase和许多其他数据存储可以通过从Spark Packages生态系统中拉入单独的连接器来使用。Spark SQL允许在SQL查询中透明地使用用户定义函数(UDF)。

 

从数据帧中选择一些列就像这行代码一样简单:

citiesDF.select(“name”, “pop”)

 

使用SQL接口,我们将数据帧注册为临时表,然后可以对其发出SQL查询:

citiesDF.createOrReplaceTempView(“cities”)

spark.sql(“SELECT name, pop FROM cities”)

 

在幕后,Apache Spark使用一个名为Catalyst的查询优化器,该优化器检查数据和查询,以便为数据位置和计算生成有效的查询计划,该计划将在集群中执行所需的计算。自Apache Spark 2.x以来,数据帧和数据集的Spark SQL接口(本质上是一个类型化数据帧,可以在编译时检查其正确性,并利用运行时的进一步内存和计算优化)一直是推荐的开发方法。RDD接口仍然可用,但仅当您的需求无法在Spark SQL范例中解决时(例如,当您必须在较低级别工作以榨取系统的最后一点性能时),才建议使用RDD接口。

 

Spark MLlib和MLflow

ApacheSpark还捆绑了用于将机器学习和图分析技术应用于大规模数据的库。MLlib包括一个用于创建机器学习管道的框架,允许在任何结构化数据集上轻松实现特征提取、选择和转换。MLlib提供了集群和分类算法的分布式实现,如k-means集群和随机森林,可以轻松地在自定义管道中进行交换。数据科学家可以在Apache Spark中使用R或Python训练模型,使用MLlib保存,然后导入到基于Java或Scala的管道中以供生产使用。

MLflow是一个用于管理机器学习生命周期的开源平台,从技术上讲,它不是Apache Spark项目的一部分,但它也是Databricks和Apache Spark社区中其他人的产品。该社区一直在努力将MLflow与Apache Spark集成,以提供MLOps功能,如实验跟踪、模型注册、打包和UDF,这些功能可以很容易地导入以在Apache Spark规模下进行推理,并与传统的SQL语句一起使用。

 

结构化流媒体

结构化流是一种高级API,允许开发人员创建无限流数据帧和数据集。从Spark 3.0开始,结构化流式处理是Apache Spark中处理流数据的推荐方法,取代了早期的Spark Streaming方法。Spark Streaming(现在被标记为遗留组件)对开发人员来说充满了困难的痛点,特别是在处理事件时间聚合和消息延迟交付时。

结构化流上的所有查询都通过Catalyst查询优化器,它们甚至可以以交互式方式运行,允许用户对实时流数据执行SQL查询。对延迟消息的支持由水印消息和三种受支持的窗口技术提供:滚动窗口、滑动窗口和具有会话的可变长度时间窗口。

Spark 3.1及更高版本中,可以将流视为表,将表视为流。将多个流与广泛的类似SQL的流到流连接相结合的能力为摄取和转换创造了强大的可能性。下面是一个从流媒体源创建表的简单示例:

val df = spark.readStream

  .format("rate")

  .option("rowsPerSecond", 20)

  .load()

 

df.writeStream

  .option("checkpointLocation", "checkpointPath")

  .toTable("streamingTable")

 

spark.read.table("myTable").show()

 

默认情况下,结构化流式处理使用处理流数据的微批处理方案。但在Spark 2.3中,Apache Spark团队为Structured Streaming添加了一种低延迟连续处理模式,使其能够处理延迟低至1ms的响应,并使其与Apache Flink和Apache Beam等竞争对手更具竞争力。连续处理限制您进行类似映射和选择操作,虽然它支持对流的SQL查询,但它当前不支持SQL聚合。此外,尽管Spark 2.3于2018年推出,但截至2023年3月的Spark 3.3.2,连续处理仍被标记为实验性。

结构化流式处理是Apache Spark平台流式应用程序的未来,因此如果您正在构建新的流式处理应用程序,应该使用结构化流式传输。将继续支持传统的Spark Streaming API,但该项目建议移植到结构化流媒体,因为新方法使编写和维护流代码变得更容易忍受。

 

Spark上的Pandas API

Python中数据操作和分析的行业标准是Pandas库。在Apache Spark 3.2中,提供了一个新的API,允许很大一部分Pandas API与Spark一起透明使用。现在,数据从业者可以简单地将其导入替换为导入pyspark.Pandas作为pd,并对他们的代码将继续工作有点信心,还可以利用Apache Spark的多节点执行。目前,Pandas API的覆盖率约为80%,目标是在即将发布的版本中实现90%的覆盖率。

 

运行Apache Spark


 

在基本级别上,Apache Spark应用程序由两个主要组件组成:驱动程序(它将用户的代码转换为可以分布在工作节点上的多个任务)和执行器(它在这些工作节点上运行并执行分配给它们的任务)。需要某种形式的集群管理器来在两者之间进行调解。

开箱即用,Apache Spark可以在独立集群模式下运行,该模式只需要集群中的每个节点上都有Apache SPACK框架和Java虚拟机。然而,您更可能希望利用更健壮的资源管理或集群管理系统来根据需要为您分配工作人员。

随着Hadoop变得不那么根深蒂固,越来越多的公司转向在Kubernetes上部署Apache Spark。这已反映在Apache Spark 3.x版本中,该版本改进了与Kubernetes的集成,包括为驱动程序和执行程序定义pod模板以及使用定制调度器(如Volcano)的能力。

 

Apache Spark教程

如果您准备好投入并学习Spark,建议参加中培IT学院大数据挖掘、可视化与ChatGPT职场赋能课程,课程将为该框架提供一个详细的讲解,并将讲述其他数据核心技术的实际应用。

为了深入了解,你可以咨询课程顾问获取课程大纲,目前报名还可享受专属优惠

马上抢座学习,努力成为明日的数据领域专家!

中培IT学院可为企业或团体提供大数据定制培训服务

[1]

 
网络安全热度最高的6本证书...
系统分析师VS系统架构设计...
项目经理考NPDP还是软考高...
盘点五个IT领域下证快的证...
CBA与TOGAF:探寻企业架构...
【收藏】软考电子证书下载...
项目经理任选两本证书,年...
DAMA中国推出“一考两证”...
数据分析具体指的是什么,...
数据分析师需要具备什么数...
CDA认证带你了解数据分析的...
敏捷与DevOps协同工作的注...
DevOps自动化测试的注意事...
DevOps五个好用的工具列表...
IT项目管理实现落地有哪些...
IT项目需求分析重点是建立...


中培IT学院 Copyright@2006-2024  北京中培伟业管理咨询有限公司.ALL Rights Reseved 备案号:京ICP备13024721号-2