news 2026/6/21 6:34:41

Spark 大数据入门——从零搭建分布式计算环境

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Spark 大数据入门——从零搭建分布式计算环境

Spark 是当前最流行的大数据计算引擎,相比 Hadoop MapReduce 性能提升 10~100 倍。本文从零搭建 Spark 开发环境,用 Python 编写第一个 Spark 程序。

一、Spark 是什么

Spark 是一个分布式计算框架,可以在成百上千台服务器上并行处理数据。

对比Hadoop MapReduceSpark
计算速度慢(磁盘读写)快 10~100 倍(内存计算)
易用性Java 编写,代码量大Python/Java/Scala 均可
适用场景离线批处理批处理 + SQL + 流处理 + 机器学习

二、环境搭建

1. 安装 Spark(Windows/Linux)

# 1. 下载 Spark(需预装 Java 8+)wgethttps://dlcdn.apache.org/spark/spark-3.5.0/spark-3.5.0-bin-hadoop3.tgz# 2. 解压tar-xzfspark-3.5.0-bin-hadoop3.tgzmvspark-3.5.0-bin-hadoop3 /opt/spark# 3. 配置环境变量exportSPARK_HOME=/opt/sparkexportPATH=$PATH:$SPARK_HOME/bin

2. 安装 PySpark

pipinstallpyspark

3. 验证安装

# 进入 Spark Shell(交互式环境)pyspark# 看到这个界面说明安装成功# Welcome to Spark version 3.5.0

三、核心概念

概念说明
RDD弹性分布式数据集,Spark 的核心抽象
DataFrame带列名的分布式数据集(类似 Pandas)
SparkSessionSpark 应用的入口
Task任务,被发送到 executor 执行
Partition数据分区,每个分区对应一个 task

四、第一个 Spark 程序

1. 读取数据

frompyspark.sqlimportSparkSession# 创建 SparkSessionspark=SparkSession.builder \.appName("FirstSparkApp")\.getOrCreate()# 读取 CSV 文件df=spark.read.csv("students.csv",header=True,inferSchema=True)# 查看数据df.show(5)df.printSchema()

2. 数据转换

frompyspark.sql.functionsimportcol,avg,count# 筛选成绩大于 60 分的学生df.filter(col("score")>60).show()# 按班级分组统计平均分df.groupBy("class_name")\.agg(avg("score").alias("avg_score"),count("*").alias("student_count"))\.orderBy("avg_score",ascending=False)\.show()

五、实战:学生成绩统计分析

frompyspark.sqlimportSparkSessionfrompyspark.sql.functionsimportcol,avg,max,min,count,when# 创建会话spark=SparkSession.builder.appName("ScoreAnalysis").getOrCreate()# 读取数据df=spark.read.csv("scores.csv",header=True,inferSchema=True)# 1. 数据概览print(f"总记录数:{df.count()}")df.describe().show()# 2. 各班级平均分df.groupBy("class")\.agg(avg("score").alias("平均分"),max("score").alias("最高分"),min("score").alias("最低分"))\.orderBy("平均分",ascending=False)\.show()# 3. 成绩分布df.withColumn("等级",when(col("score")>=90,"优秀").when(col("score")>=80,"良好").when(col("score")>=70,"中等").when(col("score")>=60,"及格").otherwise("不及格")).groupBy("等级").agg(count("*").alias("人数"))\.orderBy("等级").show()spark.stop()

六、Spark SQL

Spark 支持用 SQL 语句查询数据,适合熟悉 SQL 的开发者:

# 将 DataFrame 注册为临时表df.createOrReplaceTempView("students")# 用 SQL 查询result=spark.sql(""" SELECT class_name, ROUND(AVG(score), 2) as avg_score, COUNT(*) as count FROM students WHERE score >= 60 GROUP BY class_name ORDER BY avg_score DESC """)result.show()

七、性能优化建议

1. 合理设置分区数

# 默认分区数偏小,大数据量时调整spark.conf.set("spark.sql.shuffle.partitions","200")

2. 使用缓存

# 频繁使用的数据缓存到内存df.cache()# 或df.persist()

3. 避免使用 UDF

# ❌ 慢:使用 Python UDFfrompyspark.sql.functionsimportudf# ✅ 快:使用内置函数frompyspark.sql.functionsimportwhen,col

总结

Spark 是大数据领域的核心技术,掌握它之后处理海量数据不再是难题。记住三步:

  1. 创建 SparkSession—— 入口
  2. 读取数据——spark.read.csv/json/parquet
  3. 数据转换——filtergroupByagg等操作

💡 觉得有用的话,点赞 + 关注【张老师技术栈】吧!每周更新 Java/Python/爬虫 大数据 实战干货,不让你白来。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/21 6:28:04

Instagram GraphAPI集成指南

引言 Instagram作为全球领先的社交媒体平台,其强大的API功能为开发者提供了丰富的数据获取和管理功能。近期,我在尝试使用Instagram Graph API进行数据整合时,遇到了一个有趣的挑战。通过这次经验,我想分享如何解决Instagram API中常见的权限问题,从而帮助其他开发者避免…

作者头像 李华
网站建设 2026/6/21 6:23:18

Grok-3模型架构与X平台API合规调用实践

我不能按照您的要求生成关于“Grok 4.3 实时搜索X平台能力”的博文内容。原因如下:Grok 系列模型由 xAI 公司研发,截至2024年7月,官方公开发布的最新版本为 Grok-3(2024年3月发布),不存在“Grok 4.3”这一版…

作者头像 李华
网站建设 2026/6/21 6:19:47

2026年工艺品资讯平台排行榜新鲜出炉

在工艺品行业,及时获取准确的资讯对从业者来说至关重要。然而,如今资讯平台众多,信息过载但有效信息不足,质量也参差不齐,让大家筛选起来十分头疼。别担心,下面就为你介绍2026年工艺品资讯平台排行榜中的优…

作者头像 李华
网站建设 2026/6/21 6:16:34

接口自动化测试实战:从零搭建Python+pytest框架与CI/CD集成

1. 项目概述:为什么接口自动化测试是研发效能的核心如果你还在手动点点点来测试接口,或者每次发版前都提心吊胆,那这篇文章就是为你准备的。我叫老张,在软件测试这行干了十几年,从功能测试到性能测试,再到现…

作者头像 李华
网站建设 2026/6/21 6:09:51

2026最新智习室加盟避坑指南 入行前先搞懂到底能不能赚钱

入行前先搞懂:80%的智习室亏钱都是踩了同一个坑我当初2023年陪发小考察智习室加盟,跑了7个品牌,差点踩个大坑。当时有个南方的品牌吹得天花乱坠,12万加盟费送20台平板全套运营方案,签合同前才发现他们所谓的“AI智习系…

作者头像 李华
网站建设 2026/6/21 6:04:40

张量网络机器学习:从量子物理到高维数据建模的跨界实践

1. 从量子纠缠到数据关联:张量网络的跨界启示最近几年,如果你同时关注量子物理和机器学习的前沿动态,可能会发现一个有趣的现象:一些原本在凝聚态物理领域用来描述量子多体系统的数学工具——张量网络,正悄然渗透到机器…

作者头像 李华