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
在这里插入图片描述
新建 CLASSPATH
.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar;

在这里插入图片描述
增加path
在这里插入图片描述
“win+r”键输入cmd,输入java -version,查看jdk是否配置成功
在这里插入图片描述

2、Scala

下载scala
https://www.scala-lang.org/download/2.11.12.html
在这里插入图片描述
下载完,解压到自己的安装目录,配置环境变量SCALA_HOME
在这里插入图片描述
增加path
%SCALA_HOME%\bin

在这里插入图片描述
验证scala是否配置成功
在这里插入图片描述

3、Maven

Maven下载
https://archive.apache.org/dist/maven/maven-3/3.6.1/binaries/
在这里插入图片描述
下载后解压到自己的安装目录,配置环境变量 MAVEN_HOME
在这里插入图片描述
增加path
%MAVEN_HOME%\bin
在这里插入图片描述
验证maven是否配置成功
在这里插入图片描述

4、Hdoop

下载hadoop
https://archive.apache.org/dist/hadoop/common/hadoop-2.6.0/
在这里插入图片描述
下载完解压到自己的安装目录,配置环境变量 HADOOP_HOME
在这里插入图片描述
下载 hadoop-common-2.6.0-bin
https://github.com/amihalik/hadoop-common-2.6.0-bin
在这里插入图片描述
下载后解压,把bin下的文件拷贝到hadoop的安装目录的bin下
在这里插入图片描述

5、IntelliJ IDEA

下载
https://www.jetbrains.com/idea/download/other.html
在这里插入图片描述
可以安装免费社区版本,默认安装即可

二、配置IDEA

1、安装scala插件

打开IDEA,右下角
在这里插入图片描述
搜索scala,安装即可
在这里插入图片描述
如果下载比较慢,可以单独下载scala插件,手动安装
https://plugins.jetbrains.com/plugin/1347-scala/versions
下载和IDEA对应的版本
在这里插入图片描述
下载完,点IDEA这里安装
在这里插入图片描述

2、全局maven配置

点击“setting”
在这里插入图片描述
搜索“maven”,选择已安装的maven,设置setting.xml和repository路径
在这里插入图片描述
修改maven的settings.xml文件
添加自己本地资源库路径

<localRepository>C:\Apache\apache-maven-3.6.1\repository</localRepository>

在这里插入图片描述
添加国内镜像

<mirror>
     <id>alimaven</id>
     <name>aliyun maven</name>
     <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
     <mirrorOf>central</mirrorOf>        
</mirror>

在这里插入图片描述

3、设置jdk

在这里插入图片描述
选择已安装的jdk
在这里插入图片描述
选择已安装的scala
在这里插入图片描述
在这里插入图片描述

三、通过maven创建项目

1、HelloWorld

通过maven创建scala项目
点击“Create New Project”
在这里插入图片描述
选择maven,点Next
在这里插入图片描述
输入项目名称和路径
在这里插入图片描述
右击项目,添加scala
在这里插入图片描述
在这里插入图片描述
在src -> main下可以创建scala目录,单独放scala开发的程序
在这里插入图片描述
右键,设置scala路径为“Sources Root”
在这里插入图片描述
右键,新建scala类
在这里插入图片描述
输入类名HelloWorld,选Object
在这里插入图片描述
HelloWorld代码

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

运行
在这里插入图片描述

2、Spark开发WordCount

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

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

    <dependencies>
        <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-common</artifactId>
            <version>${hadoop.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-hdfs</artifactId>
            <version>${hadoop.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-core_${scala.version}</artifactId>
            <version>${spark.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-sql_${scala.version}</artifactId>
            <version>${spark.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-hive_${scala.version}</artifactId>
            <version>${spark.version}</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.26</version>
        </dependency>
</dependencies>

刷新maven
在这里插入图片描述
或这里刷新maven
在这里插入图片描述
新建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

直接运行如下:
在这里插入图片描述

3、Maven打jar设置

File 下点击
在这里插入图片描述
点击
在这里插入图片描述
删除多余的jar,保留项目名“SparkDemo”jar即可。还可以在这设置jar名称和路径
在这里插入图片描述
删除后如下
在这里插入图片描述
点 Build- Build Artifacts…
在这里插入图片描述
点 Build
在这里插入图片描述
在项目下会生成out文件夹,下面有生成的jar
在这里插入图片描述
可以把生成的jar发到spark集群运行
在这里插入图片描述

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(","))
  }

}

运行如下

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()
  }
}

在这里插入图片描述

5、SparkHive配置

把hive-site.xml放到resources下,就可以通过spark-sql操作hive了
新建 SparkHive类
在这里插入图片描述
代码如下

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下
在这里插入图片描述
添加spark-yarn包
在这里插入图片描述
从spark安装目录下找
在这里插入图片描述
新建 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()
  }
}

运行如下
在这里插入图片描述

  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值