第三階段—8天Python從入門到精通【itheima】-139節(pysqark實戰-前言介紹)

目錄

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#將模型和分詞工…