PySpark入门

PySpark Documentation — PySpark 3.3.0 documentationhttps://spark.apache.org/docs/latest/api/python/


 前言 - Spark


1. 运行pyspark的各种方式

1,通过pyspark进入pyspark单机交互式环境。
这种方式一般用来测试代码。
也可以指定jupyter或者ipython为交互环境。

2,通过spark-submit提交Spark任务到集群运行。
这种方式可以提交Python脚本或者Jar包到集群上让成百上千个机器运行任务。
这也是工业界生产中通常使用spark的方式。

3,通过zepplin notebook交互式执行。
zepplin是jupyter notebook的apache对应产品。

4, Python安装findspark和pyspark库。
可以在jupyter和其它Python环境中像调用普通库一样地调用pyspark库。

2. Spark基本概念

  • 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中的一个线程。
  • 总结:Application由多个Job组成,Job由多个Stage组成,Stage由多个Task组成。Stage是作业调度的基本单位。

3. PySpark架构设计

pyspark,为了不破坏Spark已有的运行时架构,Spark在外围包装一层Python API。在Driver端,借助Py4j实现Python和Java的交互,进而实现通过Python编写Spark应用程序。在Executor端,则不需要借助Py4j,因为Executor端运行的Task逻辑是由Driver发过来的,那是序列化后的字节码。

4. Spark运行流程

  1. Application首先被Driver构建DAG图并分解成Stage。
  2. 然后Driver向Cluster Manager申请资源。
  3. Cluster Manager向某些Work Node发送征召信号。
  4. 被征召的Work Node启动Executor进程响应征召,并向Driver申请任务。
  5. Driver分配Task给Wo
PySpark 是 Apache Spark 的 Python API,它允许你利用 Python 编写分布式数据处理程序。Spark 是一个大数据处理框架,它提供了快速的、可扩展的、容错的大数据处理能力。PySpark 则是 Spark 的 Python 实现,它允许你使用 Python 语言来编写 Spark 应用程序。 一个简单的 PySpark 入门程序通常包含以下几个步骤: 1. 初始化 SparkSession 对象,这是使用 PySpark 的入口。 2. 使用 SparkSession 来读取数据集或者创建 DataFrame。 3. 对数据进行转换和操作。 4. 将处理结果输出或者存储。 下面是一个简单的 PySpark 入门程序示例: ```python from pyspark.sql import SparkSession # 初始化 SparkSession 对象 spark = SparkSession.builder \ .appName("PySparkExample") \ .getOrCreate() # 读取数据创建 DataFrame(这里以本地的 CSV 文件为例) df = spark.read.csv("path/to/your/csvfile.csv", header=True, inferSchema=True) # 显示 DataFrame 中的前 20 行数据 df.show(20) # 对 DataFrame 进行简单的数据操作,比如选择某些列 selected_columns = df.select("column1", "column2") selected_columns.show() # 保存处理后的结果到一个新的 CSV 文件中 selected_columns.write.csv("path/to/your/output.csv", header=True) # 停止 SparkSession spark.stop() ``` 在这个例子中,我们首先导入了 `SparkSession` 类,并使用它来创建一个 SparkSession 实例。之后,我们读取了一个 CSV 文件到 DataFrame 中,并展示了数据的前 20 行。然后我们选择并展示了特定的列,并将结果保存到了一个新的 CSV 文件中。最后,我们关闭了 SparkSession 以释放资源。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值