• windows系统下pyspark安装


     

    1. spark环境搭建

    Win7 系统下用IDEA创建Spark工程,由于版本之间相互依赖,下载时要看清楚版本。

    jdk-8u281-windows-x64.exe

    spark-3.1.1-bin-hadoop2.7.tgz spark是基于scala开发,具体可从 spark与scala版本对应关系 查看

    hadoop-2.7.1.tar.gz  index: https://archive.apache.org/dist/hadoop/common/

    hadooponwindos-master 

    -- Spark不支持win7,原始下载的hadoop2.7.6的bin在win7下编译会缺少dll文件,此包加入了这些文件。

    -- 用hadooponwindos-master的bin文件复制到D:softwaresparkhadoop-2.7.6in,替换hadoop-2.7.6的bin文件。(替换前可以重命名原始为 xx_bak)

    好像下载 winutils 也可,将下载好的 winutils.exe文件放入到Hadoop的bin目录下

    scala-2.12.13.zip

    IntelliJ IDEA   pyspark用pycharm应该就可以了,spark开发人员建议下载,注意选择版本

    IDEA支持的Scala工程插件:scala-intellij-bin-2021.1.15.zip  注意版本号按IDEA plugins搜索结果来

    环境配置

    JAVA_HOME = D:Javajdk1.8.0_281
    CLASSPATH = %JAVA_HOME%lib;%JAVA_HOME%lib ools.jar
    HADOOP_HOME = D:hadoop-2.7.1
    SCALA_HOME = D:scala-2.12.13
    --运行pyspark报错无'python3'解决
    SPARK_HOME = D:spark-3.1.1-bin-hadoop2.7
    --py4j貌似还是得pip装
    PYTHONPATH = %SPARK_HOME%/python;%SPARK_HOME%/python/lib/py4j-0.10.9-src.zip
    PYSPARK_PYTHON = D:Anaconda3python.exe

    PATH 追加
    %JAVA_HOME%in;%JAVA_HOME%jrein;
    %HADOOP_HOME%in;
    %SPARK_HOME%in;
    %SPARK_HOME%sbin;
    %SPARK_HOME%python; --有的直接把D:spark-3.1.1-bin-hadoop2.7python下的pyspark直接拷贝到D:Anaconda3Libsite-packages下
    %SCALA_HOME%in

    cmd测试

    spark-shell -version

    查看是否支持hive

    cmd>spark-shell

    scala>import org.apache.spark.sql.hive.HiveContext

    python测试

    # pip install py4j
    from pyspark import SparkConf, SparkContext
    conf = SparkConf().setMaster("local[*]").setAppName("First_App")
    sc = SparkContext(conf=conf)
    
    # 计算0到9的总和
    # 如果报错 java.io.IOException: Cannot run program "python3": CreateProcess error=2, 系统找不到指定的文件。
    # 添加环境变量即可 PYSPARK_PYTHON = D:Anaconda3python.exe
    data = sc.parallelize(range(10))
    ans = data.reduce(lambda x, y: x + y)
    print (ans)
    
    # README.md的行数和第一行
    lines = sc.textFile("D:spark-3.1.1-bin-hadoop2.7README.md")
    print (lines.count())
    print (lines.first())
    

     

    一、测试

    (1)任意目录下,运行 Win+R,并输入spark-shell脚本命令,测试spark

    什么是spark-shell?

    spark-shell是提供给用户即时交互的一个命令窗口,你可以在里面编写spark代码,然后根据你的命令进行相应的运算

    (2)实例化SparkContext对象

    什么是SparkContext?

    SparkContext是编写Spark程序用到的第一个类,其中包含了Spark程序用到的几乎所有的核心对象,可见其重要性

    master:local[*]   == 本地运行模式[也可以是集群的形式],*表示多个线程并行执行

    在Java中实例化SparkContext对象的demo如下

     (3)通过scala语言,编写spark代码,利用reduce计算集合1,2,3,4,5的和

    通过调用SparkContext的parallelize方法,在一个已经存在的Scala集合上创建一个Seq对象。集合的对象将会被拷贝,创建出一个可以被并行操作的分布式数据集RDD

    体现在Java中的demo如下

     体现在脚本语言中如下:

    二、用Intellij IDEA创建Spark工程

    (1)安装scala插件

    Idea默认是不能创建Scala工程的。需要安装idea的scala插件,如何判断idea需要安装哪个版本?
    安装此插件有两种方法:
    方法一:IDEA
    File-->Setting-->Plugins-->搜索scala(查看版本:scala Version 2017.3.15)-->点击install
    方法二:直接下载scala-intellij-bin-2017.3.15.zip(无需解压),然后Install plugin from disk
    安装完需要重启IDEA才能使用

    (2) scala sdk配置
    File->New Project->Java
    选择Java的SDK,选择Scala.
    选择Create,将下载的scala添加进来

     

     (3)创建工程目录

     (4)添加spark的jar包

    File->Project Structure->Libraries
    将D:spark-3.1.1-bin-hadoop2.7jars添加进来。
    在此操作之后,External Libraries中会出现 jdk 1.8、jars、scala-sdk 三个lib

     (5)scala工程测试

    创建一个SparkDemo的Object,并运行。

    windows在cmd上运行以下命令:D:hadoop-2.7.1inwinutils.exe chmod 777 D:	mphive 否则可能会报错,后面的文件夹先创建好,参考链接
    package demo
    import org.apache.spark._
    object SparkDemo{
      def main(args: Array[String]): Unit={
        val masterUrl = "local[1]"
        val conf = new SparkConf().setAppName("helenApp").setMaster(masterUrl)
        val sc = new SparkContext(conf)
        val rdd=sc.parallelize(List(1,2,3,4,5,6)).map(_*3)
        rdd.filter(_>10).collect().foreach(println)
        println(rdd.reduce(_+_))
        println("hello world")
       }
    }
    

      

    报错汇总

    1. 报错:Exception in thread "main" org.apache.spark.SparkException: A master URL must be set in your configuration

    解决:
    传递给spark的master url可以有如下几种:
    local 本地单线程
    local[K] 本地多线程(指定K个内核)
    local[*] 本地多线程(指定所有可用内核)
    spark://HOST:PORT 连接到指定的 Spark standalone cluster master,需要指定端口。
    mesos://HOST:PORT 连接到指定的 Mesos 集群,需要指定端口。
    yarn-client客户端模式 连接到 YARN 集群。需要配置 HADOOP_CONF_DIR。
    yarn-cluster集群模式 连接到 YARN 集群。需要配置 HADOOP_CONF_DIR。

    若是本地调试状态可以默认为local,设置如下:
    Run->Edit Configuration->
    编辑VM option 输入: “-Dspark.master=local” 指示本程序本地单线程运行,再次运行即可。

     2. 1 <console>:14: error: not found: value spark

    2        import spark.implicits._
    3               ^
    4 <console>:14: error: not found: value spark
    5        import spark.sql

    其原因是没有权限在spark中写入metastore_db 这个文件。

    处理方法:我们授予777的权限

    Linux环境,我们在root下操作:

    sudo chmod 777 /home/hadoop/spark
    #为了方便,可以给所有的权限
    sudo chmod a+w /home/hadoop/spark
    

    window环境下:

    存放Spark的文件夹不能设为只读和隐藏

    点击spark安装目录,右击>属性>去除“只读”勾选

    授予完全控制的权限

    参考链接

    windows安装Spark3.0.0+hadoop+JDK大数据开发平台

    在windows安装部署spark(python版)

    Spark MLlib 环境搭建超详细教程 看创建项目步骤截图

    Spark在Windows下的环境搭建 很详细

    spark与scala版本对应关系 版本不对应可能会出各种问题

    winutils下载 需下载对应版本并替换hadoop中的bin,也可下载

    PySpark Documentation

    pyspark3.1 mlib documentation

    PySpark教程

  • 相关阅读:
    WebGIS中解决使用Lucene进行兴趣点搜索排序的两种思路
    WebGIS中兴趣点简单查询、基于Lucene分词查询的设计和实现
    手机端和网页端使用同一后台时进行会话控制的一种思路
    由项目浅谈JS中MVVM模式
    数字转换为汉字小算法
    6. GC 调优(工具篇)
    Android基础工具类重构系列一Toast
    <html>
    Android自己定义控件--圆形进度条(中间有图diao)
    jquery-ajax-php(内容点赞并进行cookie限制实现)
  • 原文地址:https://www.cnblogs.com/iupoint/p/14610486.html
Copyright © 2020-2023  润新知