pyspark的安装及使用

jdk安装

  • 必须要求为jdk1.8版本

JDK下载后环境变量配置

新增系统变量JAVA_HOME

Path新增

测试是否安装成功:javac -version

spark安装

官网下载,遇到加载不了选项框的情况可以尝试用手机打开网址获取下载链接后下载

直接解压,注意路径不要有空格

环境变量配置

Path配置

测试安装情况,cmd输入spark-shell

出现Welcome to Spark 表示安装成功,如果没有装Hadoop,则会出现一个报错,但不影响Spark的安装

hadoop安装

官网下载

解压后配置相关环境

系统变量新增HADOOP_HOME

Path配置

winutils安装

windows环境下还需要装个东西来替换掉hadoop里的bin文件才行

下载地址:https://github.com/steveloughran/winutils

使用了和hadoop相近的版本,测试没问题

直接复制替换

再次测试:spark-shell

pyspark使用

# 包的安装
pip install pyspark -i https://pypi.doubanio.com/simple/

# 可能需要用到
pip install pyspark -i https://pypi.doubanio.com/simple/

pyspark测试使用

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来设置线程数了。
'''
spark_driver_host = "10.0.0.248"

try:
    # conf = SparkConf().setAppName(appname).setMaster(master).set("spark.driver.host", spark_driver_host) # 集群
    conf = SparkConf().setAppName(appname).setMaster(master)  # 本地
    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('连接出错!')

如果出现报错为:

py4j.protocol.Py4JError: org.apache.spark.api.python.PythonUtils.isEncryptionEnabled does not exist in the JVM

在链接spark前增加spark的查找

import findspark
findspark.init()

测试结果:

F:\Anaconda3\python.exe D:/PycharmProjects/demo_pyspark.py
        
Using Spark's default log4j profile: org/apache/spark/log4j-defaults.properties
Setting default log level to "WARN".
To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel).
20/08/27 16:17:44 WARN Utils: Service 'SparkUI' could not bind on port 4040. Attempting port 4041.
Number of elements in RDD is 8
计算成功!

Process finished with exit code 0

你可能感兴趣的:(pyspark的安装及使用)