windows + anaconda 安装PySpark3.0.1

1、背景

        Spark作为分布式内存计算框架,可以广泛应用在数据处理、分析等应用场景。因此,希望借助Spark高性能的处理项目中的数据,搭建此开发环境,深入了解Spark的处理能力与实现机制。

2、开发环境

        在windows10上使用Anaconda作为Python运行与开发环境,搭建PySpark3.0.1的Python开发环境,并执行PI.py和WordCount.py示例程序。

3、下载Spark和Hadoop安装包

        1、前往Spark官网,下载spark-3.0.1-bin-hadoop2.7.tgz安装包

        2、前往Hadoop官网,下载与Spark对应的hadoop-2.7.1.tar.gz安装包

        3、在网上下载winutils.exe工具,windows下使用Hadoop接口需要依赖winutils.exe

4、PySpark环境搭建

        1、安装JDK8

        2、解压spark-3.0.1-bin-hadoop2.7.tgz到安装目录,例如D:\install

        3、解压hadoop-2.7.1.tar.gz到安装目录,例如D:\install

        4、将winutils.exe拷贝到hadoop安装目录下的bin目录中 

        5、在windows环境变量中,设置环境变量:

变量项变量值
HADOOP_HOMED:\install\hadoop-2.7.1
CLASSPATH%HADOOP_HOME%\bin\winutils.exe
SPARK_HOMED:\install\spark-3.0.1-bin-hadoop2.7

        6、打开Anaconda,创建新的环境env_spark,指定Python版本为3.8

        7、在env_spark环境中打开CMD窗口,执行pip install pyspark==3.0.1,指定安装PySpark3.0.1版本。

5、执行PySpark示例程序

        打开Anaconda,打开Spyder(Python代码IDE),分别执行PI.py和WordCount.py示例。

PI.py代码如下:

import sys
from random import random
from operator import add

from pyspark.sql import SparkSession


if __name__ == "__main__":
    """
        Usage: pi [partitions]
    """
    spark = SparkSession\
        .builder\
        .appName("PythonPi")\
        .getOrCreate()

    partitions = int(sys.argv[1]) if len(sys.argv) > 1 else 2
    n = 100000 * partitions

    def f(_: int) -> float:
        x = random() * 2 - 1
        y = random() * 2 - 1
        return 1 if x ** 2 + y ** 2 <= 1 else 0

    count = spark.sparkContext.parallelize(range(1, n + 1), partitions).map(f).reduce(add)
    print("Pi is roughly %f" % (4.0 * count / n))

    spark.stop()

        Spyder中执行结果如下:

        WordCount.py代码如下:

from pyspark.sql import SparkSession
from pyspark import SparkContext

sparksession = SparkSession.builder.appName("SimpleApp").getOrCreate()
sc = sparksession.sparkContext

lines = sc.textFile('D:\install\hadoop-2.7.1\README.txt')
rdd = lines.flatMap(lambda line : line.split(' ')).map(lambda word : (word, 1)).reduceByKey(lambda agg, cur: agg+cur)
print(rdd.collect())
sc.stop()

         WordCount.py执行结果如下:

6、注意事项

        1、安装高版本的PySpark3.3.1后,执行WordCount.py 时报异常org.apache.spark.SparkException: Python worker failed to connect back。因此使用PySpark3.0.1版本。 

        

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值