使用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

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