使用anaconda虛擬python環境使用pyspark的一種方式

大數據學習之pyspark環境搭建。

安裝anaconda、配置好虛擬環境之後,可以編輯家目錄下.bashrc文件,

我的用戶名是bdbp,虛擬環境名稱也是bdbp

編輯.bashrc添加以下內容

export PYSPARK_PYTHON=/home/bdbp/.conda/envs/bdbp/bin/python
export PYSPARK_DRIVER_PYTHON=/home/bdbp/.conda/envs/bdbp/bin/jupyter
export PYSPARK_DRIVER_PYTHON_OPTS="notebook"

ipython_opts="notebook -pylab inlie"

如圖

然後在終端輸入pyspark

如圖(本機hostname是node2)

打開網頁測試(yarn集羣版)

from pyspark import SparkConf
from pyspark.sql import SparkSession
import traceback
import os
 
os.environ["PYSPARK_PYTHON"]="/usr/bin/python3"#集羣上pyspark的python版本指向python3
appname = "test"#任務名稱
master ="spark://XXX.XXX.XX.XX:XXXX" #"spark://host:port"
'''
standalone模式:spark://host:port,Spark會自己負責資源的管理調度
mesos模式:mesos://host:port
yarn模式:由於很多時候我們需要和mapreduce使用同一個集羣,所以都採用Yarn來管理資源調度,這也是生產環境大多采用yarn模式的原因。yarn模式又分爲yarn cluster模式和yarn client模式:
yarn cluster: 這個就是生產環境常用的模式,所有的資源調度和計算都在集羣環境上運行。
yarn client: 這個是說Spark Driver和ApplicationMaster進程均在本機運行,而計算任務在cluster上。
'''
spark_driver_host="XXX.XXX.XX.XX"#本地主機ip
try:
    conf = SparkConf().setAppName(appname).setMaster(master).set("spark.driver.host",spark_driver_host )
    spark=SparkSession.builder.config(conf=conf).getOrCreate()
    sc=spark.sparkContext
    words = sc.parallelize(
        ["scala",
         "java",
         "hadoop",
         "spark",
         "akka",
         "spark vs hadoop",
         "pyspark",
         "pyspark and spark"
         ])
    counts = words.count()
    print("Number of elements in RDD is %i" % counts)
    sc.stop()
    print('計算成功!')
except:
    sc.stop()
    traceback.print_exc()#返回出錯信息
    print('連接出錯!')

如圖,可以設置os.environ["PYSPARK_PYTHON"]更改python環境,所以可以靈活切換python環境

本地單機版

from pyspark import SparkConf
from pyspark.sql import SparkSession
import traceback
 
appname = "test"#任務名稱
master ="local"#單機模式設置
'''
local: 所有計算都運行在一個線程當中,沒有任何並行計算,通常我們在本機執行一些測試代碼,或者練手,就用這種模式。
local[K]: 指定使用幾個線程來運行計算,比如local[4]就是運行4個worker線程。通常我們的cpu有幾個core,就指定幾個線程,最大化利用cpu的計算能力
local[*]: 這種模式直接幫你按照cpu最多cores來設置線程數了。
'''
try:
    conf = SparkConf().setAppName(appname).setMaster(master)#spark資源配置
    spark=SparkSession.builder.config(conf=conf).getOrCreate()
    sc=spark.sparkContext
    words = sc.parallelize(
        ["scala",
         "java",
         "hadoop",
         "spark",
         "akka",
         "spark vs hadoop",
         "pyspark",
         "pyspark and spark"
         ])
    counts = words.count()
    print("Number of elements in RDD is %i" % counts)
    sc.stop()
    print('計算成功!')
except:
    sc.stop()
    traceback.print_exc()#返回出錯信息
    print('連接出錯!')

如圖

最後感謝  陽望博主和他的博文 ,連接在這:https://blog.csdn.net/qq_23860475/article/details/90476197

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章