PySpark常见类库及名词解释

2023年 12月 22日 107.7k 0

哈喽大家好,我是了不起。

PySpark是一个非常复杂的系统,我们初次接触就会感觉有很多的名词或者简称,今天就带大家看一下常见的类库和名词的解释,也是方便大家统一收藏,方便后续查找,先了解单一名词的解释,有利于快速的理解整个PySpark的运行机制。

PySpark核心类

  • pyspark.SparkContext: Spark 库的主要入口点,它表示与Spark集群的一个连接,其他重要的对象都要依赖它.SparkContext存在于Driver中,是Spark功能的主要入口。代表着与Spark集群的连接,可以在集群上创建RDD,accumulators和广播变量
  • pyspark.RDD: 是Spark的主要数据抽象概念,是Spark库中定义的一个抽象类。
  • pyspark.streaming.StreamingContext 一个定义在Spark Streaming库中定义的类, 每一个Spark Streaming 应用都必须创建这个类
  • pyspark.streaming.DStrem:离散数据流,是Spark Streaming处理数据流的主要对象
  • pyspark.sql.SparkSession: 是DataFrame和SQL函数的主要入口点。
  • pyspark.sql.DataFrame: 是Spark SQL的主要抽象对象,若干行的分布式数据,每一行都要若干个有名字的列。跟R/Python中的DataFrame 相像,有着更丰富的优化。DataFrame可以有很多种方式进行构造,例如:结构化数据文件,Hive的table, 外部数据库,RDD。
  • pyspark.sql.Column DataFrame 的列表达.
  • pyspark.sql.Row DataFrame的行数据

Spark的基本概念

Application由多个Job组成,Job由多个Stage组成,Stage由多个Task组成。Stage是作业调度的基本单位。

  • RDD:是弹性分布式数据集(Resilient Distributed Dataset)的简称,是分布式内存的一个抽象概念,提供了一种高度受限的共享内存模型。
  • DAG:是Directed Acyclic Graph(有向无环图)的简称,反映RDD之间的依赖关系。
  • Driver Program:控制程序,负责为Application构建DAG图。
  • Cluster Manager:集群资源管理中心,负责分配计算资源。
  • Worker Node:工作节点,负责完成具体计算。
  • Executor:是运行在工作节点(Worker Node)上的一个进程,负责运行Task,并为应用程序存储数据。
  • Application:用户编写的Spark应用程序,一个Application包含多个Job。
  • Job:作业,一个Job包含多个RDD及作用于相应RDD上的各种操作。
  • Stage:阶段,是作业的基本调度单位,一个作业会分为多组任务,每组任务被称为“阶段”。
  • Task:任务,运行在Executor上的工作单元,是Executor中的一个线程。

RDD操作的两种类型

RDD的操作有两种类型,即Transformation操作和Action操作。转换操作是从已经存在的RDD创建一个新的RDD,而行动操作是在RDD上进行计算后返回结果到 Driver。

(1) Transformation操作:

用于对RDD的创建,还包括大量的操作方法,如map、filter、groupBy、join等,RDD利用这些操作生成新的RDD。

transformation都具有 Lazy 特性,即 Spark 不会立刻进行实际的计算,只会记录执行的轨迹,只有触发Action操作的时候,它才会根据 DAG 图真正执行。

(2) action操作:

数据执行部分,通过执行count、reduce、collect等真正执行数据的计算。RDD的lazy模式,使得大部分前期工作都在transformation时已经完成。

PySpark - MLlib

Apache Spark提供了一个名为MLlib的机器学习API。PySpark也在Python中使用这个机器学习API。它支持不同类型的算法。

  • mllib.classification - spark.mllib包支持二进制分类,多类分类和回归分析的各种方法。分类中一些最流行的算法是Random Forest, Naive Bayes, Decision Tree等。
  • mllib.clustering - 聚类是一种无监督的学习问题,您可以根据某些相似概念将实体的子集彼此分组。
  • mllib.fpm - 频繁模式匹配是挖掘频繁项,项集,子序列或其他子结构,这些通常是分析大规模数据集的第一步。多年来,这一直是数据挖掘领域的一个活跃的研究课题。
  • mllib.linalg - 线性代数的MLlib实用程序。
  • mllib.recommendation - 协同过滤通常用于推荐系统。这些技术旨在填写用户项关联矩阵的缺失条目。
  • spark.mllib - 它目前支持基于模型的协同过滤,其中用户和产品由一小组可用于预测缺失条目的潜在因素描述。spark.mllib使用交替最小二乘(ALS)算法来学习这些潜在因素。
  • mllib.regression - 线性回归属于回归算法族。回归的目标是找到变量之间的关系和依赖关系。使用线性回归模型和模型摘要的界面类似于逻辑回归案例。

总结

今天给大家带来的是PySpark常见类库和名词解释,了解这些最基础的名词以后,我们看大段的相关资料就不会犯难了。

相关文章

JavaScript2024新功能:Object.groupBy、正则表达式v标志
PHP trim 函数对多字节字符的使用和限制
新函数 json_validate() 、randomizer 类扩展…20 个PHP 8.3 新特性全面解析
使用HTMX为WordPress增效:如何在不使用复杂框架的情况下增强平台功能
为React 19做准备:WordPress 6.6用户指南
如何删除WordPress中的所有评论

发布评论