日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

PySpark 相关基础知识

發(fā)布時(shí)間:2024/1/1 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 PySpark 相关基础知识 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

SparkBase

1. spark的基本介紹

1.1 spark的基本介紹

  • MapReduce: 分布式計(jì)算引擎
MR 分布式計(jì)算引擎, 可以用來處理大規(guī)模數(shù)據(jù), 主要是用于批處理, 用于離線處理MR存在弊端: 1- 執(zhí)行效率比較低2- API相對(duì)比較低級(jí), 開發(fā)效率慢3- 執(zhí)行迭代計(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)行速度快
方面一: 基于內(nèi)存計(jì)算的 采用DAG 有向無環(huán)圖 進(jìn)行計(jì)算操作 中間的結(jié)果是保存在內(nèi)存中方面二: spark是基于線程來運(yùn)行的, 線程的啟動(dòng)和銷毀要高于進(jìn)程
  • 2- 易用性
方面一: spark提供多種語言的客戶端, 可以基于多種語言來運(yùn)行spark: 比如 python SQL scala java R ...方面二: spark提供了更加高階的API, 而且這些API在不同的語言上, 基本上都是一樣的, 大大的降低了程序員學(xué)習(xí)成本
  • 3- 通用型強(qiáng)
spark提供了多種工具庫, 用于滿足各種計(jì)算的場景spark core: spark的核心庫, 次重點(diǎn), 它是學(xué)習(xí)的基礎(chǔ)主要是用于放置spark的核心API, 內(nèi)存管理API,包括維護(hù)RDD的數(shù)據(jù)結(jié)構(gòu)spark SQL: 通過SQL操作spark計(jì)算框架 最為重要的spark streaming: spark的流式處理, 主要是用于支持流式計(jì)算(實(shí)時(shí)計(jì)算) (目前不使用, 整個(gè)實(shí)時(shí)主要是基于flink來完成的) spark MLlib: spark的機(jī)器學(xué)習(xí)庫, 主要包括相關(guān)算法: 回歸 聚類 .... (針對(duì)于特點(diǎn)人群)spark graphX: spark的圖計(jì)算庫 比如導(dǎo)航行程規(guī)劃 (針對(duì)于特點(diǎn)人群)

  • 4- 隨處運(yùn)行:
方面一: 編寫的spark程序可以運(yùn)行在不同的資源調(diào)度平臺(tái): local yarn平臺(tái) spark集群 , 云上的調(diào)度平臺(tái)方面二: spark程序可以和大數(shù)據(jù)生態(tài)圈中各種軟件進(jìn)行集成, 讓我們更加方便使用spark對(duì)接各個(gè)軟件

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):

  • 上傳安裝包:
要求: 只要能夠上傳到 linux的 /export/software 下 那么就是OK的, 用什么方式無所謂如果想使用rz上傳:請先安裝: yum -y install lrzsz
  • 注意: 如果使用 瀏覽器訪問 node1:4040 無法訪問的時(shí)候, 嘗試去看一下windows本地hosts文件是否有以下配置:

    hosts文件所在位置: C:\Windows\System32\drivers\etc

192.168.88.161 node1 node1.itcast.cn 192.168.88.162 node2 node2.itcast.cn 192.168.88.163 node3 node3.itcast.cn

退出客戶端, 禁止使用 ctrl + z (本質(zhì)掛載后臺(tái))

嘗試使用以下方式退出: ctrl + cctrl + d:quitquit:exitexit

2.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 10

2.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)

可能存在異常:

異常: JAVA_HOME is not set出現(xiàn)位置: 當(dāng)pycharm采用SSH連接遠(yuǎn)程Python環(huán)境時(shí), 啟動(dòng)執(zhí)行spark程序可能報(bào)出原因: 加載不到j(luò)dk的位置解決方案:第一步: 可以在linux的 /root/.bashrc 文件中, 添加以下兩行內(nèi)容 (注意需要三臺(tái)都添加)export JAVA_HOME=/export/server/jdk1.8.0_241export PYSPARK_PYTHON=/root/anaconda3/bin/python第二步: 在代碼中, 指定linux中spark所在目錄, spark中配置文件, 即可自動(dòng)加載到: 鎖定遠(yuǎn)端操作環(huán)境, 避免存在多個(gè)版本環(huán)境的問題os.environ['SPARK_HOME'] = '/export/server/spark'os.environ["PYSPARK_PYTHON"]="/root/anaconda3/bin/python"os.environ["PYSPARK_DRIVER_PYTHON"]="/root/anaconda3/bin/python"

3.3 (擴(kuò)展)部署windows開發(fā)環(huán)境(不需要做)

  • 1- 第一步: 需要安裝Python 環(huán)境 , 建議使用anaconda 來安裝即可

  • 2- 第二步: 在Python安裝pySpark

執(zhí)行:pip install pyspark==3.1.2

  • 3- 第三步: 配置 hadoop的環(huán)境

首先, 需要將 hadoop-3.3.0 放置到一個(gè)沒有中文, 沒有空格的目錄下接著將目錄中bin目錄下有一個(gè) hadoop.dll文件, 放置在c:/windows/system32 目錄下 (配置后, 需要重啟電腦)最后, 將這個(gè)hadoop3.3.0 配置到環(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)境
需要修改環(huán)境變量

配置后, 一定一直點(diǎn)確定退出, 否則就白配置了…

  • 6- 配置 jdk的環(huán)境:

首先: 需要將 jdk1.8 放置在一個(gè)沒有中文, 沒有空格的目錄下接著:要在環(huán)境變量中配置 JAVA_HOME, 并在path設(shè)置

?

?

總結(jié)

以上是生活随笔為你收集整理的PySpark 相关基础知识的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。