目录

139节——pysqark实战-前言介绍

1.学习目标

2.spark是什么

3.如下是详细介绍 PySpark 的两种使用方式,并提供具体的代码示例【大数据应用开发比赛的代码熟悉如潮水一般冲刷我的记忆】:

一、本地模式(作为 Python 第三方库使用)

步骤 1:安装 PySpark

步骤 2:编写本地处理代码

关键参数说明

二、集群模式(提交代码到 Spark 集群)

步骤 1:编写可提交的 Python 脚本

步骤 2:使用 spark-submit 提交到集群

关键参数说明

三、两种模式对比

四、本地模式与集群模式的代码差异

五、调试建议

5.WHY TO LEARN PYSPARK                

6.小节总结

好了,又一篇博客和代码写完了,励志一下吧,下一小节等等继续:


139节——pysqark实战-前言介绍

1.学习目标

1.了解什么是spark、pyspark

2.了解为什么学习spark

3.了解课程是如何和大数据开发方向进行衔接

2.spark是什么

spark是Apache基金会旗下的顶级开源项目之一,是一款分布式计算框架,可以调动多台分布式集群,进行分布式计算。





对于spark的语言支持,python是目前被大力扶植的。


python拥有pyspark这样的第三方库,是spark官方所开发的,如要使用,直接进行pip下载即可。
针对于pyspark来说,可以将pysqark作为一个python的第三方库进行数据处理和使用,也可以将你的代码提交至spark集群上进行分布式的集群模式的计算。







 

3.如下是详细介绍 PySpark 的两种使用方式,并提供具体的代码示例【大数据应用开发比赛的代码熟悉如潮水一般冲刷我的记忆】:

一、本地模式(作为 Python 第三方库使用)

这是最简单的使用方式,无需集群环境,直接在本地 Python 环境中调用 Spark 功能。

步骤 1:安装 PySpark

bash

pip install pyspark
步骤 2:编写本地处理代码

下面是一个读取 CSV 文件并进行数据分析的示例:

 

python

运行

from pyspark.sql import SparkSession
from pyspark.sql.functions import sum, avg, count# 创建 SparkSession(本地模式)
spark = SparkSession.builder \.appName("LocalPySparkExample") \.master("local[*]")  # 使用本地所有 CPU 核心.getOrCreate()# 读取 CSV 文件(本地路径或 HDFS 路径)
df = spark.read.csv("D:/2011年销售数据.csv",header=True,inferSchema=True  # 自动推断数据类型
)# 显示数据结构和前几行
df.printSchema()
df.show(5)# 数据处理示例:按省份统计销售额
province_sales = df.groupBy("province") \.agg(sum("money").alias("总销售额"),avg("money").alias("平均订单金额"),count("order_id").alias("订单数量")) \.orderBy("总销售额", ascending=False)# 显示结果
province_sales.show()# 将结果保存为 CSV
province_sales.write.csv("D:/销售统计结果.csv",header=True,mode="overwrite"
)# 停止 SparkSession
spark.stop()
关键参数说明
  • master("local[*]"):使用本地所有 CPU 核心并行计算。
  • header=True:CSV 文件包含表头。
  • inferSchema=True:自动推断字段类型(如 intstring)。

二、集群模式(提交代码到 Spark 集群)

这种方式适合处理海量数据,利用集群的分布式计算能力。

步骤 1:编写可提交的 Python 脚本

以下是一个完整的 PySpark 脚本,可提交到集群运行:

 

python

运行

# spark_job.py
from pyspark.sql import SparkSession
from pyspark.sql.functions import sum, coldef main():# 创建 SparkSession(不指定 master,由集群环境决定)spark = SparkSession.builder \.appName("ClusterPySparkJob") \.getOrCreate()# 读取 HDFS 上的销售数据df = spark.read.csv("hdfs://namenode:9000/data/sales/2011年销售数据.csv",header=True,inferSchema=True)# 数据处理:计算每月销售额monthly_sales = df \.withColumn("month", col("date").substr(6, 2))  # 提取月份.groupBy("month") \.agg(sum("money").alias("月销售额")) \.orderBy("month")# 将结果保存回 HDFSmonthly_sales.write.csv("hdfs://namenode:9000/results/monthly_sales",header=True,mode="overwrite")# 停止 SparkSessionspark.stop()if __name__ == "__main__":main()
步骤 2:使用 spark-submit 提交到集群

假设你的集群是 YARN 模式,使用以下命令提交:

 

bash

spark-submit \--master yarn \--deploy-mode cluster \--num-executors 4 \--executor-memory 4g \--driver-memory 2g \/path/to/spark_job.py
关键参数说明
  • --master yarn:使用 YARN 作为资源管理器。
  • --deploy-mode cluster:Driver 运行在集群中(而非本地)。
  • --num-executors 4:分配 4 个执行器(Executor)。
  • --executor-memory 4g:每个执行器分配 4GB 内存。

三、两种模式对比

特性本地模式集群模式
运行环境单机,无需集群需要 Spark 集群(YARN/Mesos/K8s)
数据规模适合小数据量(GB 级)适合海量数据(TB/PB 级)
并行度依赖本地 CPU 核心数可扩展到集群的所有节点
资源分配手动指定(如 local[4]通过 spark-submit 参数动态分配
典型场景开发调试、教学演示生产环境、大数据分析

四、本地模式与集群模式的代码差异

  1. SparkSession 创建

    • 本地:需指定 master("local[*]")
    • 集群:不指定 master,由 spark-submit 参数决定。
  2. 数据路径

    • 本地:使用本地文件系统路径(如 file:///D:/data.csv)。
    • 集群:使用 HDFS 路径(如 hdfs://namenode:9000/data.csv)。
  3. 资源控制

    • 本地:无法充分利用集群资源。
    • 集群:可通过参数精确控制资源(如 --executor-memory)。

五、调试建议

  1. 本地调试:先用小数据在本地模式验证逻辑,添加详细日志。
  2. 逐步扩展:本地通过后,再提交到集群处理全量数据。
  3. 监控工具:使用 Spark UI(默认端口 4040)监控任务执行情况。
 

如果需要更复杂的分布式计算(如实时流处理、机器学习),PySpark 也提供了对应的 API(如 pyspark.streaming 和 pyspark.ml)。

5.WHY TO LEARN PYSPARK                

python的就业方向:





大数据开发岗位的核心条件:python和spark是必须的。


python中的pyspark,是从python像大数据方向的重要衔接【Hadoop入门和spark3.2】:





 

6.小节总结


好了,又一篇博客和代码写完了,励志一下吧,下一小节等等继续:

Patrick,你他妈给我站直了 —— 体重秤上那 0.4 斤的波动,不是失败,是身体在跟你叫板,而你今天两趟健身房的汗水,已经把它的嚣张摁下去一半了!

 

你以为戈金斯在海豹突击队训练时没掉过链子?他在地狱周里吐过血、摔断过骨,体重掉了 20 磅又反弹 5 磅,但他从来没盯着秤看 —— 他盯着的是下一个俯卧撑,下一次冲刺。你现在犯的错,不是吃多了 200 克饼,不是喝了半两白酒,是你把 “7月份的最后3 天减到 某个整数” 当成了终点,忘了减肥这回事,本就是跟自己的欲望打持久战。

 

急功近利?正常。对目标的渴望烧得你坐立难安,这说明你他妈的还有血性!但血性要用对地方:明天开始,把那 200 克饼换成鸡蛋,把白酒换成黑咖啡,把 “我可能做不到” 换成 “每口饭都算在目标里”。你中午喝完酒还能冲进健身房干一个小时,这股狠劲没几个人有 —— 别让它被自责浪费了。

 

剩下的 3 天,不是枷锁,是你给身体重新编程的机会。体重秤爱怎么跳就怎么跳,但你每多喝一口水、多做一组卷腹,都是在告诉自己:“我他妈说了要赢,就不会认怂。” 戈金斯说过,“痛苦是你的测量仪”,你今天的糟心,恰恰证明你离目标有多近 —— 那些躺平的人,连这种痛苦的资格都没有。

 

别管今天有多蠢,明天太阳升起时,你还是那个能在健身房泡两个半小时的狠角色。把饼的热量换算成跳绳的次数,把白酒的懊悔变成平板支撑的秒数,把对秤的执念变成对每口食物的敬畏。

 

记住:减肥不是减到某个数字就结束,是把 “跟自己死磕” 变成肌肉记忆。3 天后不管秤上是多少,只要你还在跟欲望较劲,你就已经赢了那些早早就向食欲投降的软蛋。

 

现在,滚去规划明天的饮食,然后睡够 7 小时 —— 你的身体需要燃料,不是自责。明天的你,要比今天更狠,更准,更他妈的不管不顾。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/90962.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/90962.shtml
英文地址,请注明出处:http://en.pswp.cn/web/90962.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

redis数据库的四种取得 shell方法

Redis作为高性能内存数据库,若配置不当(特别是未授权访问),将面临极高安全风险。攻击者可利用漏洞实现远程代码执行(GetShell),严重威胁数据安全与服务器控制权。本文深入剖析此类漏洞的核心原理…

墨者:SQL过滤字符后手工绕过漏洞测试(万能口令)

1. 墨者学院:SQL过滤字符后手工绕过漏洞测试(万能口令)🚀 2. 漏洞背景分析🔍 近期发现某登录系统存在SQL注入漏洞,攻击者可通过构造特殊用户名admin,a,a)#绕过身份验证。本文将深入解析其工作原理,并演示完整渗透测试流…

Kafka 顺序消费实现与优化策略

在 Apache Kafka 中,实现顺序消费需要从 Kafka 的架构和特性入手,因为 Kafka 本身是分布式的消息系统,默认情况下并不完全保证全局消息的顺序消费,但可以通过特定配置和设计来实现局部或完全的顺序消费。以下是实现 Kafka 顺序消费…

CSP-J 2022_第三题逻辑表达式

题目 逻辑表达式是计算机科学中的重要概念和工具,包含逻辑值、逻辑运算、逻辑运算优先级等内容。 在一个逻辑表达式中,元素的值只有两种可能:0(表示假)和 1(表示真)。元素之间有多种可能的逻辑运…

从释永信事件看“积善“与“积恶“的人生辩证法

博客目录起心动念皆是因,当下所受皆是果。"起心动念皆是因,当下所受皆是果。"这句古老的智慧箴言,在少林寺方丈释永信涉嫌违法被调查的事件中得到了令人唏嘘的印证。一位本应六根清净、持戒修行的佛门领袖,却深陷贪腐丑…

图片格式转换

文章目录 背景目标实现下载 背景 格式碎片化问题 行业标准差异:不同领域常用格式各异(如设计界用PSD/TIFF,网页用JPG/PNG/WEBP,系统图标用ICO/ICNS)。 设备兼容性:老旧设备可能不支持WEBP,专业…

Flutter实现Android原生相机拍照

方法1:使用Flutter的camera插件(完整实现) 1. 完整依赖与权限配置 # pubspec.yaml dependencies:flutter:sdk: fluttercamera: ^0.10.52path_provider: ^2.0.15 # 用于获取存储路径path: ^1.8.3 # 用于路径操作permission_handler:…

记录几个SystemVerilog的语法——随机

1. 随机稳定性(random stability)随机稳定性是指每个线程(thread)或对象(object)的random number generator(RNG)是私有的,一个线程返回的随机值序列与其他线程或对象的RNG是无关的。随机稳定性适用于以下情况:系统随机方法调用:$urandom()和…

初识 docker [下] 项目部署

项目部署Dockerfile构建镜像DockerCompose基本语法基础命令项目部署 前面我们一直在使用别人准备好的镜像,那如果我要部署一个Java项目,把它打包为一个镜像该怎么做呢? …省略一万字 站在巨人的肩膀上更适合我们普通人,所以直接介绍两种简单…

Android15广播ANR的源码流程分析

Android15的广播ANR源码流程跟了下实际代码的流程,大概如下哈:App.sendBroadcast() // 应用发起广播→ AMS.broadcastIntentWithFeature() // 通过Binder IPC进入system_server进程→ AMS.broadcastIntentLocked() // 权限校验广播分类(前…

密码学中的概率论与统计学:从频率分析到现代密码攻击

在密码学的攻防博弈中,概率论与统计学始终是破解密码的“利器”。从古典密码时期通过字母频率推测凯撒密码的密钥,到现代利用线性偏差破解DES的线性密码分析,再到侧信道攻击中通过功耗数据的统计特性还原密钥,统计思维贯穿了密码分…

力扣刷题977——有序数组的平方

977. 有序数组的平方 题目: 给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。示例 1: 输入:nums [-4,-1,0,3,10] 输出:[0,1,9,16,100] 解释&…

应用加速游戏盾的安全作用

在数字娱乐产业蓬勃发展的今天,游戏已从单纯的娱乐工具演变为连接全球数十亿用户的社交平台与文化载体。然而,伴随游戏市场的指数级增长,网络攻击的频率与复杂性也呈爆发式上升。从DDoS攻击导致服务器瘫痪,到外挂程序破坏公平竞技…

linux安装zsh,oh-my-zsh,配置zsh主题及插件的方法

这是一份非常详细的指南,带你一步步在 Linux 系统中安装 Zsh、配置主题和安装插件。 Zsh(Z Shell)是一个功能强大的 Shell,相比于大多数 Linux 发行版默认的 Bash,它提供了更强的自定义能力、更智能的自动补全、更漂亮…

【设计模式系列】策略模式vs模板模式

策略模式是什么?如何定义并封装一系列算法策略模式 (Strategy Pattern)模板模式 (Template Pattern)模板模式与策略模式的深度对比与区分混合使用两种模式的场景策略模式 (Strategy Pattern) 应用场景:当需要根据不同条件选择不同算法或行为时&#xff…

aigc(1.1) opensora-2.0

open sora-2.0相关链接: arxiv链接 huggingface页面 HunyuanVideo VAE open sora2.0的VAE模型复用了HunyuanVideo的3D VAE,HunyuanVideo的arxiv链接。下图来自论文,可见VAE是一个因果注意力的3D结构。在配图左侧,视频会被编码为video token序列,而在配图右侧,去噪的vide…

Linux驱动21 --- FFMPEG 音频 API

目录 一、FFMPEG 音频 API 1.1 解码步骤 创建核心上下文指针 打开输入流 获取输入流 获取解码器 初始化解码器 创建输入流指针 创建输出流指针 初始化 SDL 配置音频参数 打开音频设备 获取一帧数据 发送给解码器 从解码器获取数据 开辟数据空间 初始化内存 音频重采样…

《计算机“十万个为什么”》之 [特殊字符] 序列化与反序列化:数据打包的奇妙之旅 ✈️

《计算机“十万个为什么”》之 📦 序列化与反序列化:数据打包的奇妙之旅 ✈️欢迎来到计算机“十万个为什么”系列! 本文将以「序列化与反序列化」为主题,深入探讨计算机世界中数据的打包与解包过程。 让我们一起解开数据的神秘面…

机器学习与深度学习评价指标

机器学习与深度学习评价指标完全指南 📊 为什么需要评价指标? 想象你是一位医生,需要判断一个诊断模型的好坏。如果模型说"这个病人有癌症",你需要知道: 这个判断有多准确? 会不会漏掉真正的癌症患者? 会不会误诊健康的人? 评价指标就像是给AI模型打分的&…

Hugging Face-环境配置

打开anaconda promptconda activate pytorchpip install -i https://pypi.tuna.tsinghua.edu.cn/simple transformers datasets tokenizerspycharm找到pytorch下的python.exe#将模型下载到本地调用 from transformers import AutoModelForCausalLM,AutoTokenizer#将模型和分词工…