PySpark,一个超级强大的 Python 库

2024-08-25 22:20
文章标签 python 强大 超级 pyspark

本文主要是介绍PySpark,一个超级强大的 Python 库,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

大家好!我是炒青椒不放辣,关注我,收看每期的编程干货。

一个简单的库,也许能够开启我们的智慧之门,
一个普通的方法,也许能在危急时刻挽救我们于水深火热,
一个新颖的思维方式,也许能激发我们无尽的创造力,
一个独特的技巧,也许能成为我们的隐形盾牌……


神奇的 Python 库之旅,第 14

目录

    • 一、初识 PySpark
    • 二、基本操作
    • 三、DataFrame 和 Spark SQL
    • 四、机器学习与流处理
    • 五、实战案例
    • 六、结语
    • 七、作者Info

一、初识 PySpark

PySpark 是 Apache Spark 的 Python API,它让我们能够在 Python 环境中使用 Spark 的强大功能。Spark 是一个快速的、通用的大数据处理引擎,能够以分布式的方式处理大规模数据。通过 PySpark,我们可以使用 Spark 的所有功能,包括数据处理、机器学习、流处理等。

为什么选择 PySpark?

  • 高效处理大数据:Spark 的内存计算能力使得它比传统的 MapReduce 快很多倍。
  • 丰富的 API:PySpark 提供了丰富的 API,支持各种数据操作和处理。
  • 与 Hadoop 兼容:PySpark 可以与 Hadoop 生态系统无缝集成,利用 HDFS、Hive 等工具。
  • 灵活性高:PySpark 兼具 Python 的简洁和 Spark 的强大功能,适合各种数据处理任务。

安装 PySpark
安装 PySpark 非常简单,只需要一行命令:

pip install pyspark

配置 PySpark
在使用 PySpark 之前,我们需要配置 Spark 环境。确保你已经安装了 Java 和 Spark,并将 Spark 的 bin 目录添加到系统的 PATH 环境变量中。

你可以在 Python 脚本中创建 SparkSession 来启动 Spark 应用:

from pyspark.sql import SparkSession# 创建 SparkSession
spark = SparkSession.builder \.appName("PySpark Example") \.getOrCreate()print("Spark 版本:", spark.version)


Github 项目地址;

https://github.com/apache/spark/tree/master/python/pyspark

二、基本操作

创建 RDD
RDD(Resilient Distributed Dataset)是 Spark 的基本数据结构。我们可以通过并行化现有集合或从外部存储读取数据来创建 RDD。

# 并行化集合创建 RDD
data = [1, 2, 3, 4, 5]
rdd = spark.sparkContext.parallelize(data)# 从外部存储读取数据创建 RDD
text_rdd = spark.sparkContext.textFile("path/to/file.txt")

基本 RDD 操作
RDD 支持多种操作,包括转换操作和行动操作。转换操作返回一个新的 RDD,而行动操作返回一个值。

# 转换操作
mapped_rdd = rdd.map(lambda x: x * 2)
filtered_rdd = rdd.filter(lambda x: x % 2 == 0)# 行动操作
collected_data = mapped_rdd.collect()  # 收集所有元素
sum_of_elements = rdd.reduce(lambda x, y: x + y)  # 求和print("收集的数据:", collected_data)
print("元素和:", sum_of_elements)

三、DataFrame 和 Spark SQL

DataFrame 是 PySpark 提供的高级数据结构,类似于 Pandas 的 DataFrame,但可以处理大规模数据。Spark SQL 则允许我们使用 SQL 查询来操作 DataFrame。

创建 DataFrame
我们可以通过结构化数据文件(如 CSV、JSON)、现有 RDD 或 Pandas DataFrame 来创建 Spark DataFrame。

# 从 CSV 文件创建 DataFrame
df = spark.read.csv("path/to/file.csv", header=True, inferSchema=True)# 从 JSON 文件创建 DataFrame
json_df = spark.read.json("path/to/file.json")# 从 Pandas DataFrame 创建 Spark DataFrame
import pandas as pdpandas_df = pd.DataFrame({"name": ["Alice", "Bob"], "age": [25, 30]})
spark_df = spark.createDataFrame(pandas_df)

基本 DataFrame 操作
DataFrame 支持多种操作,包括选择、过滤、聚合等。

基本 DataFrame 操作
DataFrame 支持多种操作,包括选择、过滤、聚合等。

使用 Spark SQL
我们可以将 DataFrame 注册为临时视图,并使用 SQL 查询来操作数据。

# 注册临时视图
df.createOrReplaceTempView("people")# 使用 SQL 查询
result = spark.sql("SELECT name, age FROM people WHERE age > 25")
result.show()

四、机器学习与流处理

PySpark 提供了丰富的机器学习和流处理功能,分别通过 MLlib 和 Structured Streaming 实现。

机器学习
MLlib 是 Spark 的机器学习库,提供了多种算法和工具。让我们看一个简单的机器学习例子,使用线性回归模型。

from pyspark.ml.regression import LinearRegression# 创建训练数据
training = spark.createDataFrame([(1.0, 2.0),(2.0, 3.0),(3.0, 4.0),(4.0, 5.0),
], ["label", "features"])# 创建线性回归模型
lr = LinearRegression()# 训练模型
model = lr.fit(training)# 打印模型系数和截距
print("系数:", model.coefficients)
print("截距:", model.intercept)

流处理
Structured Streaming 是 Spark 提供的流处理引擎,支持对实时数据流的处理。

from pyspark.sql.functions import split# 创建流式 DataFrame
lines = spark.readStream.format("socket").option("host", "localhost").option("port", 9999).load()# 分割行中的单词
words = lines.select(split(lines.value, " ").alias("word"))# 计数每个单词出现的次数
word_counts = words.groupBy("word").count()# 启动查询并将结果输出到控制台
query = word_counts.writeStream.outputMode("complete").format("console").start()query.awaitTermination()

五、实战案例

处理大规模日志数据
让我们用 PySpark 处理大规模日志数据,计算每个 IP 地址的访问次数。

# 读取日志文件
log_df = spark.read.text("path/to/log/file")# 提取 IP 地址
ip_df = log_df.select(split(log_df.value, " ")[0].alias("ip"))# 计算每个 IP 地址的访问次数
ip_counts = ip_df.groupBy("ip").count().orderBy("count", ascending=False)# 显示结果
ip_counts.show()

机器学习分类
让我们用 PySpark 进行一个简单的机器学习分类任务,使用决策树分类器。

from pyspark.ml.classification import DecisionTreeClassifier
from pyspark.ml.feature import VectorAssembler# 创建样本数据
data = spark.createDataFrame([(1.0, 1.0, 0.0),(1.0, 2.0, 1.0),(2.0, 2.0, 0.0),(2.0, 3.0, 1.0),
], ["feature1", "feature2", "label"])# 将特征组合成向量
assembler = VectorAssembler(inputCols=["feature1", "feature2"], outputCol="features")
data = assembler.transform(data)# 创建决策树分类器
dt = DecisionTreeClassifier(featuresCol="features", labelCol="label")# 训练模型
model = dt.fit(data)# 预测
predictions = model.transform(data)# 显示预测结果
predictions.select("features", "label", "prediction").show()

更多功能、详细用法可参考官方文档:

https://spark.apache.org/docs/latest/api/python/index.html

六、结语

今天我和各位靓仔们一起探索了 PySpark 这个强大的 Python 大数据处理库。从基础操作到高级应用,再到实际案例,相信你已经对 PySpark 有了全面的了解和掌握。通过这种方式,我们可以更加轻松地处理大规模数据,提高数据处理的效率和效果。

希望你能将这些知识应用到实际项目中,享受大数据处理的乐趣。编码不仅是一种技能,更是一门艺术。愿你在数据的海洋里不断探索,成为一个真正的数据大师!

在这里插入图片描述

七、作者Info

Author:小鸿的摸鱼日常

Goal:让编程更有趣! 专注于 Web 开发、爬虫,游戏开发,数据分析、自然语言处理,AI 等,期待你的关注,让我们一起成长、一起Coding!

版权说明:本文禁止抄袭、转载,侵权必究!

这篇关于PySpark,一个超级强大的 Python 库的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1106811

相关文章

Python如何使用__slots__实现节省内存和性能优化

《Python如何使用__slots__实现节省内存和性能优化》你有想过,一个小小的__slots__能让你的Python类内存消耗直接减半吗,没错,今天咱们要聊的就是这个让人眼前一亮的技巧,感兴趣的... 目录背景:内存吃得满满的类__slots__:你的内存管理小助手举个大概的例子:看看效果如何?1.

Python+PyQt5实现多屏幕协同播放功能

《Python+PyQt5实现多屏幕协同播放功能》在现代会议展示、数字广告、展览展示等场景中,多屏幕协同播放已成为刚需,下面我们就来看看如何利用Python和PyQt5开发一套功能强大的跨屏播控系统吧... 目录一、项目概述:突破传统播放限制二、核心技术解析2.1 多屏管理机制2.2 播放引擎设计2.3 专

Python中随机休眠技术原理与应用详解

《Python中随机休眠技术原理与应用详解》在编程中,让程序暂停执行特定时间是常见需求,当需要引入不确定性时,随机休眠就成为关键技巧,下面我们就来看看Python中随机休眠技术的具体实现与应用吧... 目录引言一、实现原理与基础方法1.1 核心函数解析1.2 基础实现模板1.3 整数版实现二、典型应用场景2

Python实现无痛修改第三方库源码的方法详解

《Python实现无痛修改第三方库源码的方法详解》很多时候,我们下载的第三方库是不会有需求不满足的情况,但也有极少的情况,第三方库没有兼顾到需求,本文将介绍几个修改源码的操作,大家可以根据需求进行选择... 目录需求不符合模拟示例 1. 修改源文件2. 继承修改3. 猴子补丁4. 追踪局部变量需求不符合很

python+opencv处理颜色之将目标颜色转换实例代码

《python+opencv处理颜色之将目标颜色转换实例代码》OpenCV是一个的跨平台计算机视觉库,可以运行在Linux、Windows和MacOS操作系统上,:本文主要介绍python+ope... 目录下面是代码+ 效果 + 解释转HSV: 关于颜色总是要转HSV的掩膜再标注总结 目标:将红色的部分滤

Python 中的异步与同步深度解析(实践记录)

《Python中的异步与同步深度解析(实践记录)》在Python编程世界里,异步和同步的概念是理解程序执行流程和性能优化的关键,这篇文章将带你深入了解它们的差异,以及阻塞和非阻塞的特性,同时通过实际... 目录python中的异步与同步:深度解析与实践异步与同步的定义异步同步阻塞与非阻塞的概念阻塞非阻塞同步

Python Dash框架在数据可视化仪表板中的应用与实践记录

《PythonDash框架在数据可视化仪表板中的应用与实践记录》Python的PlotlyDash库提供了一种简便且强大的方式来构建和展示互动式数据仪表板,本篇文章将深入探讨如何使用Dash设计一... 目录python Dash框架在数据可视化仪表板中的应用与实践1. 什么是Plotly Dash?1.1

在C#中调用Python代码的两种实现方式

《在C#中调用Python代码的两种实现方式》:本文主要介绍在C#中调用Python代码的两种实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录C#调用python代码的方式1. 使用 Python.NET2. 使用外部进程调用 Python 脚本总结C#调

Python下载Pandas包的步骤

《Python下载Pandas包的步骤》:本文主要介绍Python下载Pandas包的步骤,在python中安装pandas库,我采取的方法是用PIP的方法在Python目标位置进行安装,本文给大... 目录安装步骤1、首先找到我们安装python的目录2、使用命令行到Python安装目录下3、我们回到Py

Python GUI框架中的PyQt详解

《PythonGUI框架中的PyQt详解》PyQt是Python语言中最强大且广泛应用的GUI框架之一,基于Qt库的Python绑定实现,本文将深入解析PyQt的核心模块,并通过代码示例展示其应用场... 目录一、PyQt核心模块概览二、核心模块详解与示例1. QtCore - 核心基础模块2. QtWid