Windows下配置IDEA开发Spark(spark和hive整合,IDEA中standalone、yarn直接执行)

Windows下配置IDEA开发Spark(spark和hive整合,IDEA中standalone、yarn直接执行)

本文介绍Windows下如何配置IDEA开发Spark,spark和hive整合,IDEA中standalone、yarn的方式运行代码的配置。

环境信息
Windows 10 X64
JDK1.8.0_191
Scala 2.11.12
Maven 3.6.1
Hadoop 2.6.0
IntelliJ IDEA 2020.1.1 x64

一、工具安装

1、Java JDK

Jdk下载
https://www.oracle.com/java/technologies/javase/javase8-archive-downloads.html
在这里插入图片描述
下载后直接默认安装,配置环境变量
右键计算机“属性”->“高级系统设置”->“高级”->“环境变量” -> “新建” JAVA_HOME
Windows下配置IDEA开发Spark(spark和hive整合,IDEA中standalone、yarn直接执行)_第1张图片
新建 CLASSPATH
.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar;

Windows下配置IDEA开发Spark(spark和hive整合,IDEA中standalone、yarn直接执行)_第2张图片
增加path
Windows下配置IDEA开发Spark(spark和hive整合,IDEA中standalone、yarn直接执行)_第3张图片
“win+r”键输入cmd,输入java -version,查看jdk是否配置成功
Windows下配置IDEA开发Spark(spark和hive整合,IDEA中standalone、yarn直接执行)_第4张图片

2、Scala

下载scala
https://www.scala-lang.org/download/2.11.12.html
Windows下配置IDEA开发Spark(spark和hive整合,IDEA中standalone、yarn直接执行)_第5张图片
下载完,解压到自己的安装目录,配置环境变量SCALA_HOME
在这里插入图片描述
增加path
%SCALA_HOME%\bin

Windows下配置IDEA开发Spark(spark和hive整合,IDEA中standalone、yarn直接执行)_第6张图片
验证scala是否配置成功
Windows下配置IDEA开发Spark(spark和hive整合,IDEA中standalone、yarn直接执行)_第7张图片

3、Maven

Maven下载
https://archive.apache.org/dist/maven/maven-3/3.6.1/binaries/
Windows下配置IDEA开发Spark(spark和hive整合,IDEA中standalone、yarn直接执行)_第8张图片
下载后解压到自己的安装目录,配置环境变量 MAVEN_HOME
Windows下配置IDEA开发Spark(spark和hive整合,IDEA中standalone、yarn直接执行)_第9张图片
增加path
%MAVEN_HOME%\bin
Windows下配置IDEA开发Spark(spark和hive整合,IDEA中standalone、yarn直接执行)_第10张图片
验证maven是否配置成功
在这里插入图片描述

4、Hdoop

下载hadoop
https://archive.apache.org/dist/hadoop/common/hadoop-2.6.0/
Windows下配置IDEA开发Spark(spark和hive整合,IDEA中standalone、yarn直接执行)_第11张图片
下载完解压到自己的安装目录,配置环境变量 HADOOP_HOME
Windows下配置IDEA开发Spark(spark和hive整合,IDEA中standalone、yarn直接执行)_第12张图片
下载 hadoop-common-2.6.0-bin
https://github.com/amihalik/hadoop-common-2.6.0-bin
Windows下配置IDEA开发Spark(spark和hive整合,IDEA中standalone、yarn直接执行)_第13张图片
下载后解压,把bin下的文件拷贝到hadoop的安装目录的bin下
Windows下配置IDEA开发Spark(spark和hive整合,IDEA中standalone、yarn直接执行)_第14张图片

5、IntelliJ IDEA

下载
https://www.jetbrains.com/idea/download/other.html
Windows下配置IDEA开发Spark(spark和hive整合,IDEA中standalone、yarn直接执行)_第15张图片
可以安装免费社区版本,默认安装即可

二、配置IDEA

1、安装scala插件

打开IDEA,右下角
Windows下配置IDEA开发Spark(spark和hive整合,IDEA中standalone、yarn直接执行)_第16张图片
搜索scala,安装即可
Windows下配置IDEA开发Spark(spark和hive整合,IDEA中standalone、yarn直接执行)_第17张图片
如果下载比较慢,可以单独下载scala插件,手动安装
https://plugins.jetbrains.com/plugin/1347-scala/versions
下载和IDEA对应的版本
Windows下配置IDEA开发Spark(spark和hive整合,IDEA中standalone、yarn直接执行)_第18张图片
下载完,点IDEA这里安装
Windows下配置IDEA开发Spark(spark和hive整合,IDEA中standalone、yarn直接执行)_第19张图片

2、全局maven配置

点击“setting”
Windows下配置IDEA开发Spark(spark和hive整合,IDEA中standalone、yarn直接执行)_第20张图片
搜索“maven”,选择已安装的maven,设置setting.xml和repository路径
Windows下配置IDEA开发Spark(spark和hive整合,IDEA中standalone、yarn直接执行)_第21张图片
修改maven的settings.xml文件
添加自己本地资源库路径

<localRepository>C:\Apache\apache-maven-3.6.1\repositorylocalRepository>

Windows下配置IDEA开发Spark(spark和hive整合,IDEA中standalone、yarn直接执行)_第22张图片
添加国内镜像

<mirror>
     <id>alimavenid>
     <name>aliyun mavenname>
     <url>http://maven.aliyun.com/nexus/content/groups/public/url>
     <mirrorOf>centralmirrorOf>        
mirror>

Windows下配置IDEA开发Spark(spark和hive整合,IDEA中standalone、yarn直接执行)_第23张图片

3、设置jdk

Windows下配置IDEA开发Spark(spark和hive整合,IDEA中standalone、yarn直接执行)_第24张图片
选择已安装的jdk
Windows下配置IDEA开发Spark(spark和hive整合,IDEA中standalone、yarn直接执行)_第25张图片
选择已安装的scala
Windows下配置IDEA开发Spark(spark和hive整合,IDEA中standalone、yarn直接执行)_第26张图片
Windows下配置IDEA开发Spark(spark和hive整合,IDEA中standalone、yarn直接执行)_第27张图片

三、通过maven创建项目

1、HelloWorld

通过maven创建scala项目
点击“Create New Project”
Windows下配置IDEA开发Spark(spark和hive整合,IDEA中standalone、yarn直接执行)_第28张图片
选择maven,点Next
Windows下配置IDEA开发Spark(spark和hive整合,IDEA中standalone、yarn直接执行)_第29张图片
输入项目名称和路径
Windows下配置IDEA开发Spark(spark和hive整合,IDEA中standalone、yarn直接执行)_第30张图片
右击项目,添加scala
Windows下配置IDEA开发Spark(spark和hive整合,IDEA中standalone、yarn直接执行)_第31张图片
Windows下配置IDEA开发Spark(spark和hive整合,IDEA中standalone、yarn直接执行)_第32张图片
在src -> main下可以创建scala目录,单独放scala开发的程序
Windows下配置IDEA开发Spark(spark和hive整合,IDEA中standalone、yarn直接执行)_第33张图片
右键,设置scala路径为“Sources Root”
Windows下配置IDEA开发Spark(spark和hive整合,IDEA中standalone、yarn直接执行)_第34张图片
右键,新建scala类
Windows下配置IDEA开发Spark(spark和hive整合,IDEA中standalone、yarn直接执行)_第35张图片
输入类名HelloWorld,选Object
Windows下配置IDEA开发Spark(spark和hive整合,IDEA中standalone、yarn直接执行)_第36张图片
HelloWorld代码

object HelloWorld {
  def main(args: Array[String]): Unit = {
    println("Hello World")
  }
}

运行
Windows下配置IDEA开发Spark(spark和hive整合,IDEA中standalone、yarn直接执行)_第37张图片

2、Spark开发WordCount

添加 spark开发依赖
修改pom.xml,添加以下

<properties>
        <hadoop.version>2.6.0hadoop.version>
        <spark.version>2.2.0spark.version>
        <scala.version>2.11scala.version>
        <project.build.sourceEncoding>UTF-8project.build.sourceEncoding>
    properties>

    <dependencies>
        <dependency>
            <groupId>org.apache.hadoopgroupId>
            <artifactId>hadoop-commonartifactId>
            <version>${hadoop.version}version>
        dependency>
        <dependency>
            <groupId>org.apache.hadoopgroupId>
            <artifactId>hadoop-hdfsartifactId>
            <version>${hadoop.version}version>
        dependency>
        <dependency>
            <groupId>org.apache.sparkgroupId>
            <artifactId>spark-core_${scala.version}artifactId>
            <version>${spark.version}version>
        dependency>
        <dependency>
            <groupId>org.apache.sparkgroupId>
            <artifactId>spark-sql_${scala.version}artifactId>
            <version>${spark.version}version>
        dependency>
        <dependency>
            <groupId>org.apache.sparkgroupId>
            <artifactId>spark-hive_${scala.version}artifactId>
            <version>${spark.version}version>
        dependency>
        <dependency>
            <groupId>mysqlgroupId>
            <artifactId>mysql-connector-javaartifactId>
            <version>5.1.26version>
        dependency>
dependencies>

刷新maven
Windows下配置IDEA开发Spark(spark和hive整合,IDEA中standalone、yarn直接执行)_第38张图片
或这里刷新maven
Windows下配置IDEA开发Spark(spark和hive整合,IDEA中standalone、yarn直接执行)_第39张图片
新建WordCount类,代码如下

import org.apache.spark.{SparkConf, SparkContext}
object WordCount {
  def main(args: Array[String]): Unit = {
    val conf = new SparkConf()
       //本地模式运行
      .setMaster("local[4]")
      .setAppName("wordcount")
    val sc = new SparkContext(conf)
    //读取hdfs文件
    val fileRDD=sc.textFile("hdfs://cdh513:8020/testdatas/input/words.txt")
    //读取本地文件
    //val fileRDD=sc.textFile("file:\\C:\\WorkSpaces\\testdatas\\input\\words.txt")
    val wordRDD=fileRDD.flatMap(_.split(" "))
    val groupRDD = wordRDD.map((_,1)).reduceByKey(_+_)
    val wordCountArray = groupRDD.collect()
    println(wordCountArray.mkString(","))
  }
}

hdfs://cdh513:8020/testdatas/input/words.txt是本人hdfs路径的下测试文件,需要Windows配置hosts,直接访问hdfs域名,或直接用IP替换。或用本地文件 file:\C:\WorkSpaces\testdatas\input\words.txt。
words.txt内容
hello word
hello hadoop
hello spark
hello hive

直接运行如下:
Windows下配置IDEA开发Spark(spark和hive整合,IDEA中standalone、yarn直接执行)_第40张图片

3、Maven打jar设置

File 下点击
Windows下配置IDEA开发Spark(spark和hive整合,IDEA中standalone、yarn直接执行)_第41张图片
点击
Windows下配置IDEA开发Spark(spark和hive整合,IDEA中standalone、yarn直接执行)_第42张图片
删除多余的jar,保留项目名“SparkDemo”jar即可。还可以在这设置jar名称和路径
Windows下配置IDEA开发Spark(spark和hive整合,IDEA中standalone、yarn直接执行)_第43张图片
删除后如下
Windows下配置IDEA开发Spark(spark和hive整合,IDEA中standalone、yarn直接执行)_第44张图片
点 Build- Build Artifacts…
Windows下配置IDEA开发Spark(spark和hive整合,IDEA中standalone、yarn直接执行)_第45张图片
点 Build
Windows下配置IDEA开发Spark(spark和hive整合,IDEA中standalone、yarn直接执行)_第46张图片
在项目下会生成out文件夹,下面有生成的jar
Windows下配置IDEA开发Spark(spark和hive整合,IDEA中standalone、yarn直接执行)_第47张图片
可以把生成的jar发到spark集群运行
Windows下配置IDEA开发Spark(spark和hive整合,IDEA中standalone、yarn直接执行)_第48张图片

4、设置远程spark-standalone执行

代码中设置standalone主机和本地jar路径,即可直接运行
.setMaster(“spark://cdh513:7077”).setJars(List(“C:\WorkSpaces\SparkDemo\out\artifacts\SparkDemo_jar\SparkDemo.jar”))
代码如下

import org.apache.spark.{SparkConf, SparkContext}

object WordCount {
  def main(args: Array[String]): Unit = {
    val conf = new SparkConf()
    // 设置master为standalone模式,设置本地编译的jar路径。此时spark集群应该是开启状态     .setMaster("spark://cdh513:7077").setJars(List("C:\\WorkSpaces\\SparkDemo\\out\\artifacts\\SparkDemo_jar\\SparkDemo.jar"))
      .setAppName("wordcount")

    val sc = new SparkContext(conf)
     
    //此处要使用hdfs上的文件,本地文件可能找不到
    val fileRDD=sc.textFile("hdfs://cdh513:8020/testdatas/input/words.txt")
    val wordRDD=fileRDD.flatMap(_.split(" "))
    val groupRDD = wordRDD.map((_,1)).reduceByKey(_+_)

    val wordCountArray = groupRDD.collect()
    println(wordCountArray.mkString(","))
  }

}

运行如下
Windows下配置IDEA开发Spark(spark和hive整合,IDEA中standalone、yarn直接执行)_第49张图片

SparkSession下直接设置standalone的主机即可,不用指定本地jar路径
代码如下

import org.apache.spark.sql.SparkSession

object SparkSQL {
  def main(args: Array[String]): Unit = {

    val spark: SparkSession = SparkSession
      .builder
      //设置master为standalone模式
      .master("spark://cdh513:7077")
      .appName("SparkSQL")
      .getOrCreate()
    //此处最好是hdfs文件,本地文件可能读取不到
    val jsonDF = spark.read.json("hdfs://cdh513:8020/testdatas/input/user.json")
    jsonDF.createOrReplaceTempView("user")
    spark.sql("select * from user").show
spark.stop()
  }
}

Windows下配置IDEA开发Spark(spark和hive整合,IDEA中standalone、yarn直接执行)_第50张图片

5、SparkHive配置

把hive-site.xml放到resources下,就可以通过spark-sql操作hive了
新建 SparkHive类
Windows下配置IDEA开发Spark(spark和hive整合,IDEA中standalone、yarn直接执行)_第51张图片
代码如下

import org.apache.spark.sql.SparkSession

object SparkHive {
  def main(args: Array[String]): Unit = {

    val spark: SparkSession = SparkSession
      .builder
      .master("local[*]")
      .appName("SparkSQL")
      //使hive生效
      .enableHiveSupport()
      .getOrCreate()
    // 读取hive中的表
    spark.sql("select * from lxs.student").show

    spark.stop()
  }
}

6、SparkOnYarn配置

在IDEA里直接运行在yarn集群,
把core-site.xml,hdfs-site.xml,yarn-site.xml放到resources下
Windows下配置IDEA开发Spark(spark和hive整合,IDEA中standalone、yarn直接执行)_第52张图片
添加spark-yarn包
Windows下配置IDEA开发Spark(spark和hive整合,IDEA中standalone、yarn直接执行)_第53张图片
从spark安装目录下找
Windows下配置IDEA开发Spark(spark和hive整合,IDEA中standalone、yarn直接执行)_第54张图片
新建 SparkOnYarn类
代码如下

import org.apache.spark.sql.SparkSession
object SparkOnYarn {
  def main(args: Array[String]): Unit = {
    val spark: SparkSession = SparkSession
      .builder
      // 设置mater为spark on yarn模式
      .master("yarn")
      .appName("SparkSQL")
      .enableHiveSupport()
      .getOrCreate()
    // 读取hive中的表
    spark.sql("select * from lxs.student").show
    spark.stop()
  }
}

运行如下
Windows下配置IDEA开发Spark(spark和hive整合,IDEA中standalone、yarn直接执行)_第55张图片

你可能感兴趣的:(spark,hadoop,spark,hdfs,intellij,idea)