PySpark 相关基础知识
SparkBase
1. spark的基本介紹
1.1 spark的基本介紹
- MapReduce: 分布式計(jì)算引擎
也正因?yàn)镸R存在這樣的一些弊端 在一些場景中, 希望能夠有一款執(zhí)行效率更加高效, 能夠更好支持迭代計(jì)算, 同時(shí)還能夠處理大規(guī)模數(shù)據(jù)的一款新的軟件, 而spark就是在這樣的背景下產(chǎn)生了
Apache spark 是一款用于處理大規(guī)模數(shù)據(jù)的分布式計(jì)算引擎, 基于內(nèi)存計(jì)算, 整個(gè)spark的核心數(shù)據(jù)結(jié)構(gòu): RDD
RDD: 彈性的分布式數(shù)據(jù)集
Spark 最早期是來源于 加州大學(xué)伯克萊分析一幫博士發(fā)布的論文,而產(chǎn)生的, 后期貢獻(xiàn)給了apache 稱為apache的頂級(jí)項(xiàng)目: http://spark.apache.org
Spark采用Scala語言編寫的
為什么Spark的執(zhí)行速度快:
原因一: spark 提供了一個(gè)全新的數(shù)據(jù)結(jié)構(gòu): RDD通過這個(gè)數(shù)據(jù)結(jié)構(gòu), 讓分布式執(zhí)行引擎能夠在內(nèi)存中進(jìn)行計(jì)算, 同時(shí)能夠更好的進(jìn)行迭代計(jì)算操作對(duì)于MR來說, 主要是基于磁盤來計(jì)算, 而且迭代計(jì)算的時(shí)候, 需要將多個(gè)MR程序串聯(lián), 執(zhí)行效率低原因二: Spark是基于線程運(yùn)行的, MR是基于進(jìn)程運(yùn)行的線程的啟動(dòng)和銷毀的速度, 要遠(yuǎn)遠(yuǎn)高于進(jìn)程的啟動(dòng)和銷毀1.2 spark的發(fā)展史
關(guān)注:
spark是一個(gè)分布式計(jì)算引擎, pyspark是一個(gè)python的庫 專門用于操作spark的庫1.3 spark的特點(diǎn)
- 1- 運(yùn)行速度快
- 2- 易用性
- 3- 通用型強(qiáng)
- 4- 隨處運(yùn)行:
2. spark環(huán)境安裝
2.1 local模式搭建
local 模式主要是用于本地代碼測試操作
本質(zhì)上就是一個(gè)單進(jìn)程程序, 在一個(gè)進(jìn)程中運(yùn)行多個(gè)線程
類似于pandas , 都是一個(gè)單進(jìn)程程序, 無法處理大規(guī)模數(shù)據(jù), 只需要處理小規(guī)模數(shù)據(jù)
安裝操作, 可以直接參考課件中 部署文檔
注意事項(xiàng):
- 上傳安裝包:
-
注意: 如果使用 瀏覽器訪問 node1:4040 無法訪問的時(shí)候, 嘗試去看一下windows本地hosts文件是否有以下配置:
hosts文件所在位置: C:\Windows\System32\drivers\etc
退出客戶端, 禁止使用 ctrl + z (本質(zhì)掛載后臺(tái))
嘗試使用以下方式退出: ctrl + cctrl + d:quitquit:exitexit2.2 PySpark庫安裝
安裝pyspark ,其實(shí)就是在python上安裝pyspark的庫, 要求首先必須先有python環(huán)境
發(fā)現(xiàn)在虛擬機(jī)上, python環(huán)境為 2.7.5 , 但是實(shí)際是3.8的版本, 需要先安裝 python3環(huán)境安裝 python環(huán)境和pyspark環(huán)境, 可以直接參考部署文檔即可
擴(kuò)展: anaconda的常用命令
安裝庫: conda install 包名 pip install 包名 卸載庫: conda uninstall 包名 pip uninstall 包名設(shè)置anaconda下載的庫的鏡像地址: conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ conda config --set show_channel_urls yes如何使用anaconda構(gòu)建虛擬環(huán)境: -- 查看當(dāng)前有那些虛擬環(huán)境(沙箱環(huán)境) conda env list -- 創(chuàng)建一個(gè)新的虛擬環(huán)境: conda create 虛擬環(huán)境名稱 python=python版本號(hào) #創(chuàng)建python3.8.8環(huán)境-- 激活當(dāng)前環(huán)境 source activate 虛擬環(huán)境名稱 或者 conda activate 虛擬環(huán)境名稱-- 退出當(dāng)前環(huán)境 deactivate 虛擬環(huán)境名稱 #退出環(huán)境 或者 conda deactivate如何將spark程序, 提交給spark local模式進(jìn)行執(zhí)行運(yùn)行呢?
使用命令:spark-submit簡單使用cd /export/server/spark/bin./spark-submit --master local[*] 指定python的spark程序文件 [args參數(shù)]案例演示:./spark-submit --master local[2] /export/server/spark/examples/src/main/python/pi.py 102.3 spark集群模式架構(gòu)
3. 基于pycharm完成pySpark入門案例
3.1 pycharm連接遠(yuǎn)端環(huán)境
背景說明:
一般在企業(yè)中, 會(huì)存在兩套線上環(huán)境, 一套環(huán)境是用于開發(fā)(測試)環(huán)境, 一套環(huán)境是用于生產(chǎn)環(huán)境, 首先一般都是先在開發(fā)測試環(huán)境上進(jìn)行編寫代碼, 并且在此環(huán)境上進(jìn)行測試, 當(dāng)整個(gè)項(xiàng)目全部開發(fā)完成后, 需要將其上傳到生產(chǎn)環(huán)境, 面向用于使用如果說還是按照之前的本地模式開發(fā)方案, 每個(gè)人的環(huán)境有可能都不一致, 導(dǎo)致整個(gè)團(tuán)隊(duì)無法統(tǒng)一一套開發(fā)環(huán)境進(jìn)行使用, 從而導(dǎo)致后續(xù)在進(jìn)行測試 上線的時(shí)候, 出現(xiàn)各種各樣環(huán)境問題pycharm提供了一些解決方案: 遠(yuǎn)程連接方案, 允許所有的程序員都去連接遠(yuǎn)端的測試環(huán)境的, 確保大家的環(huán)境都是統(tǒng)一, 避免各種環(huán)境問題發(fā)生, 而且由于連接的遠(yuǎn)程環(huán)境, 所有在pycharm編寫代碼, 會(huì)自動(dòng)上傳到遠(yuǎn)端環(huán)境中, 在執(zhí)行代碼的時(shí)候, 相當(dāng)于是直接在遠(yuǎn)端環(huán)境上進(jìn)行執(zhí)行操作操作實(shí)現(xiàn): 本次這里配置遠(yuǎn)端環(huán)境, 指的連接虛擬機(jī)中虛擬環(huán)境, 可以配置為 base環(huán)境, 也可以配置為 pyspark_env虛擬環(huán)境, 但是建議配置為 base環(huán)境, 因?yàn)閎ase環(huán)境自帶python包更全面一些
創(chuàng)建項(xiàng)目后, 設(shè)置自動(dòng)上傳操作
校驗(yàn)是否有pyspark
ok 后, 就可以在項(xiàng)目上創(chuàng)建子項(xiàng)目進(jìn)行干活了: 最終項(xiàng)目效果圖
最后, 就可以在 main中編寫今日代碼了, 比如WordCount代碼即可
擴(kuò)展: 關(guān)于pycharm 專業(yè)版 高級(jí)功能
- 1- 直接連接遠(yuǎn)端虛擬機(jī), 進(jìn)行文件上傳, 下載 查看等等操作
- 2- 可以模擬shell控制臺(tái):
- 3- 模擬datagrip操作:
3.2 WordCount代碼實(shí)現(xiàn)_local
3.2.2 編寫代碼實(shí)現(xiàn)
可能存在異常:
3.3 (擴(kuò)展)部署windows開發(fā)環(huán)境(不需要做)
-
1- 第一步: 需要安裝Python 環(huán)境 , 建議使用anaconda 來安裝即可
-
2- 第二步: 在Python安裝pySpark
- 3- 第三步: 配置 hadoop的環(huán)境
配置后, 一定一直點(diǎn)確定退出, 否則就白配置了…
- 4-第四步: 配置spark本地環(huán)境
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-b4UnVo3R-1649749704191)(day01_pySparkBase.assets/image-20211011093739472.png)]
首先, 需要將 spark-3.1.2... 放置到一個(gè)沒有中文, 沒有空格的目錄下最后, 將這個(gè) spark-3.1.2... 配置到環(huán)境變量中:配置后, 一定一直點(diǎn)確定退出, 否則就白配置了…
- 5-配置pySpark環(huán)境
配置后, 一定一直點(diǎn)確定退出, 否則就白配置了…
- 6- 配置 jdk的環(huán)境:
?
?
總結(jié)
以上是生活随笔為你收集整理的PySpark 相关基础知识的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: qsort库函数详解
- 下一篇: vaa3d_神经元追踪算法介绍之snac