zoukankan      html  css  js  c++  java
  • 八、window搭建spark + IDEA开发环境

    本文将简单搭建一个spark的开发环境,如下:

    1)操作系统:window os

    2)IDEA开发工具以及scala插件(IDEA和插件版本要对应):

      2-1)IDEA2018.2.1:https://www.jetbrains.com/

      2-2)scala-intellij-bin-2018.2.11.zip :http://plugins.jetbrains.com/plugin/1347-scala

    3)scala和Java语言的开发包(spark2.4.0对应的可用版本):

      5-1)scala2.11 https://www.scala-lang.org/download/2.11.12.html

      5-2)JDK1.8 https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

    4)spark开发包:spark2.4.0 http://spark.apache.org/downloads.html

    我这里下载的是pre-built for apache hadoop 2.7 and later的类型,支持hadoop2.7+的版本

    5)hadoop以及hadoop在window运行的工具包(hadoop和winutils版本要对应,winutils比较麻烦如果网上找不到对应的版本需要自己编译):

      4-1)hadoop3.1.1 https://www.apache.org/dyn/closer.cgi/hadoop/common/hadoop-3.1.1/hadoop-3.1.1.tar.gz

      4-2)winutils3.1.1 https://files.cnblogs.com/files/lay2017/apache-hadoop-3.1.1-winutils-master.zip

    注意:spark开发环境对其相关依赖是有版本要求的

    本文默认你已经安装好了IDEA并配置好scala,JDK环境

    安装scala插件

    file -> setting从硬盘安装

    找到你下载的scala插件,安装并重启IDEA

    安装hadoop环境

     我们先把winutils的bin目录下的所有文件覆盖到hadoop的bin目录下,这样hadoop就能支持在windows上运行了。

    然后我们把hadoop设置到系统环境变量中,如:

    设置HADOOP_HOME

    设置PATH

    注意:设置hadoop环境变量需要重启计算机

    搭建scala项目

     我们直接搭建一个scala的IDEA项目

    与一般的其它项目创建步骤一模一样,一步步填写下去

    当项目搭建完毕,我们需要把spark的开发包引入项目;

    从file -> project structure把spark的所有开发(整个jars文件夹)包引入到项目中;在spark2.0以后原先的一个独立开发包已经被拆分成了很多单独的小包,所以这里引入整个文件夹

    这样我们就有了一个简单的spark程序结构,包括了spark包、JDK包、scala的包

    测试代码

    我们简单地使用wordCount程序来测试一下spark是否可用

    首先,我们在src目录下新建一个cn.lay的文件目录,在该目录下我们建立一个WordCount.scala文件,编写如下代码:

    package cn.lay
    
    import org.apache.spark.{SparkConf, SparkContext}
    
    /**
      * @Description 字数统计
      * @Author lay 
      * @Date 2018/12/03 22:46
      */
    object WordCount {
      def main(args: Array[String]): Unit = {
        // 创建SparkConf
        val conf = new SparkConf().setAppName("WordCount").setMaster("local");
        // 创建SparkContext
        val sc = new SparkContext(conf);
        // 输入文件
        val input = "C:\Users\admin\Desktop\word.txt";
        // 计算频次
        val count = sc.textFile(input).flatMap(x => x.split(" ")).map(x => (x, 1)).reduceByKey((x, y) => x + y);
        // 打印结果
        count.foreach(x => println(x._1 + ":" + x._2));
        // 结束
        sc.stop()
      }
    }

    代码解释:

    任何spark程序都是以sparkContext对象开始的,因为它是spark程序的上下文和入口,所以我们先创建了一个sparkContext,初始化sparkContext需要一个sparkConf,它包含了spark集群的配置参数,其中setAppName设置程序名称,setMaster设置运行模式。

    基于sparkContext去读取了本地文件word.txt,然后经过一系列的RDD计算,最后打印并关闭sparkContext

    1)这里setMaster("local")意思是将spark运行在本地,这样我们就不用一个独立的spark集群,直接在本地开发环境运行spark;

    当然你也可以不使用代码设置master,在run -> edit configurations 中添加VM参数也可以(它的作用是当你需要打包到spark集群提交时,不需要去修改代码),如图:

    除了local以外,master还有几种选择如下:

    1-1、local 单线程本地运行spark

    1-2、local[K] K个线程本地运行spark

    1-3、local[*] 根据机器逻辑内核设置线程数,本地运行spark

    1-4、spark://HOST:PORT spark独立集群上运行,默认端口7077

    1-5、mesos://HOST:PORT mesos集群上运行

    1-6、yarn: yarn集群上运行,需要配置使用client或Cluster模式

    1-7、yarn-client: 相当于yarn配置了--deploy-mode client

    1-8、yarn-cluster: 相当于yarn配置了--deploy-mode cluster

    2)而之前我们配置了hadoop的环境变量,就不用在程序中指定hadoop的根路径了,如果我们没有将hadoop配置为系统环境变量那么需要在代码中指明,如:

    System.setProperty("hadoop.home.dir", "C:UsersadminDesktop
    esourcespackageapachehadoop-3.1.1")

    3)新建一个文件夹C:\Users\admin\Desktop\word.txt,文件内容如:

    this is a word count demo

    然后直接运行main方法,控制台输出如:

  • 相关阅读:
    用到了yii2 hasMany() 方法,一对多关联
    jquery操作select标签change事件
    Yii2如何批量添加数据
    [bzoj1497][NOI2006]最大获利
    [bzoj]2962序列操作
    洛谷 P1350 车的放置
    洛谷 P1142 轰炸
    初级数论练习题
    洛谷 P3795 钟氏映射
    洛谷 2953 [USACO09OPEN]牛的数字游戏Cow Digit Game
  • 原文地址:https://www.cnblogs.com/lay2017/p/10063573.html
Copyright © 2011-2022 走看看