IntelliJ IDEA创建一个spark的项目

在开始之前,需要说明的是 要跑通基本的wordcount程序,是不需要在windows上安装 hadoop 和spark的,因为idea在跑程序的时候,会按照 pom.xml配置文件,从指定的 repository源,按照properties指定的版本,下载dependency中指定的依赖包 。 
如果需要在本地通过 spark-shell,或者 运行开发完的包,那么就需要完整的hadoop 和spark环境,就需要把这两个都安装好。

我是新入门,之前idea建立spark项目是同事指导着创建的,但是过了一段时间,具体步骤都不记得了,所以试着自己重新建立一个新的spark项目,算是熟悉一下IDEA这个工具吧。

参考文档:写的很详细

Windows平台搭建Spark开发环境(Intellij idea 2020.1社区版+Maven 3.6.3+Scala 2.11.8)_windows下安装scala+hadoop+spark运行环境,集成到idea中-CSDN博客

1. 需要安装的软件及版本

        jdk1.8-1.8.0_25

        Scala:Scala code runner version 2.11.12

        Intellij idea 2019.2.3(community edition)

        Maven:apache-maven-3.6.3

2.配置环境变量 及 验证

        配置环境变量过程中 前面的是 变量名(如 JAVA_HOME),后面是变量的值(C:\Program Files\Java)。

        1. java

                新增系统环境变量:JAVA_HOME  C:\Program Files\Java

                PATH 中增加:C:\Program Files\Java\jdk1.8.0_91\bin 和 C:\Program Files\Java\jre1.8.0_91\bin

                CLASSPATH 中要增加:.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar;

                验证是否安装成功(文字是粘的别人的,代码是我本机运行的):

C:\Users\brayden.liu>java -version
java version "1.4.2_03"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2_03-b02)
Java HotSpot(TM) Client VM (build 1.4.2_03-b02, mixed mode)

        2.Scala

                新增系统环境变量:SCALA_HOME C:\Program Files (x86)\scala
                PATH 中增加:%SCALA_HOME%\bin

                验证

C:\Users\brayden.liu>scala -version
Picked up JAVA_TOOL_OPTIONS: -Djava.vendor="Sun Microsystems Inc."
Scala code runner version 2.11.12 -- Copyright 2002-2017, LAMP/EPFL

        3.Maven

                原文是:

                Maven下载后,解压到了D:\spark_study ,删除了 apache-maven-3.6.3-bin目录,路径为D:\spark_study\apache-maven-3.6.3

                我记得我安装时候,就是直接解压缩放到D:\dev_home\apache-maven-3.6.3,好像也能用

                注意一下操作

                        新增系统环境变量:MAVEN_HOME D:\spark_study\apache-maven-3.6.3
                        新增系统环境变量:MAVEN_OPTS -Xms128m -Xmx512m
                        CLASSPATH 中要增加:%MAVEN_HOME%\bin

                        设置 本地maven 仓库 的路径为:D:\spark_study\localWarehouse,这个路径就是用来存放下载各种依赖包的。如果采用idea默认的Maven,那么仓库地址一般是 C:\Users\用户名\.m2 ,建议自己设置路径而非采用默认的路径。

        重点     

        打开 D:\dev_home\apache-maven-3.6.3\conf\settings.xml,在文件中添加:   

               D:\spark_study\localWarehouse

        后面加载maven的时候,可以联动带出本地仓库

        接下来设置 国内maven仓库 如阿里仓库,后面就会从这个镜像地址下载依赖包,速度会更快。

标签中添加:

    nexus-aliyun
    central
    Nexus aliyun
    http://maven.aliyun.com/nexus/content/groups/public

        验证(靠,后面有异常,但是好像不影响使用)

C:\Users\brayden.liu>mvn -V
Picked up JAVA_TOOL_OPTIONS: -Djava.vendor="Sun Microsystems Inc."
Apache Maven 3.6.3 (cecedd343002696d0abb50b32b541b8a6ba2883f)
Maven home: D:\dev_home\apache-maven-3.6.3\bin\..
Java version: 1.8.0_251, vendor: Sun Microsystems Inc., runtime: C:\Program Files\Java\jdk1.8.0_251\jre
Default locale: zh_CN, platform encoding: GBK
OS name: "windows 10", version: "10.0", arch: "amd64", family: "windows"
[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  0.161 s
[INFO] Finished at: 2023-12-08T15:10:31+08:00
[INFO] ------------------------------------------------------------------------
[ERROR] No goals have been specified for this build. You must specify a valid lifecycle phase or a goal in the format : or :[:]:. Available lifecycle phases are: validate, initialize, generate-sources, process-sources, generate-resources, process-resources, compile, process-classes, generate-test-sources, process-test-sources, generate-test-resources, process-test-resources, test-compile, process-test-classes, test, prepare-package, package, pre-integration-test, integration-test, post-integration-test, verify, install, deploy, pre-clean, clean, post-clean, pre-site, site, post-site, site-deploy. -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/NoGoalSpecifiedException

3.配置intellij idea

        1.安装软件

        特别需要注意的是 这里只是安装社区版,没有安装专业版,因为社区版也够用了。

        另外,如果用专业版,特别是来回安装了多次,会出现 安装完后,双击打开没有反应的问题,需要把 C:\Users\用户名\.IntelliJIdea版本号 这个目录底下的文件全部删除。

        注意勾选红色框部分,然后一步一步安装就行。

        图片是我粘的和我本机大差不差吧

IntelliJ IDEA创建一个spark的项目_第1张图片

        2、安装scala插件

通过菜单 File -》Settings 进入如下页面,然后输入 scala 找到要安装的插件,点击 安装。按照提示,需要重启 IDE。

如果你已经下载了,好像可以本地安装,我是早就安装好了的,所以不太记得了。

IntelliJ IDEA创建一个spark的项目_第2张图片

如果 显示找不到插件,可以通过 点击 Auto-detect proxy settings 来设置代理(注意 这里并不需要输入具体的url),点击保存。IntelliJ IDEA创建一个spark的项目_第3张图片

3、配置java、scala、maven

        重点,这里是重点

        通过菜单 File -》Project Structure 进入页面进行设置:IntelliJ IDEA创建一个spark的项目_第4张图片

 Global Libraries 点击 + 号,选择 Scala SDK

IntelliJ IDEA创建一个spark的项目_第5张图片

IntelliJ IDEA创建一个spark的项目_第6张图片

通过菜单 File-》Settings -》 Build,Exection,Deployment -》 Build Tools -》 Maven进入页面,要修改 Maven home directory,User settings file,Local repository,最后点击 OK 保存。

这里采用 手动安装的Maven 3.6.3版本,而非idea自带的Maven,同时指定相应的 settings.xml文件、Maven仓库的路径。

图片是我粘的别人的文档,我的也差不多,另外别忘了左边的勾选框

IntelliJ IDEA创建一个spark的项目_第7张图片

在IEDA中设置apache

file->settings->Build,Execution,Deployment->build Tools->maven

        maven home directory:本机的maven的位置

                我的是在D:/dev_home/apache-maven-3.6.3

        User settings file:maven的设置文件位置,是在maven home directory路进下

                我的是在D:\dev_home\apache-maven-3.6.3\conf\settings.xml

                记得后边的Override勾选框勾上

        Loca repository:本地jar仓库位置

                我的是在E:\repository--这个由于前面在maven中设置了,所以这里自动带出来了,很好。

然后 继续点击 Maven 左侧的向右的三角形,展开子菜单,点击 Importing ,再勾选 红色框的3个 复选框,点击 OK 保存。

这里不知道具体是干啥的,我的软件只有前两项,感觉勾不勾差不多

IntelliJ IDEA创建一个spark的项目_第8张图片

4.intellij idea中新建项目

File -》New -》Project,注意 不要勾选 “Create from archetype”(这里是重点,用了后运行程序会报一些莫名其妙的错误),因为 scala-archetype-simple:1.2 版本太低,会有很多问题,也就是上面下载的 插件并没有排上用场,这也是试了很多次才发现的。。。 

图片依然是粘的别人的,我都和这个有些不同,但是大差不差IntelliJ IDEA创建一个spark的项目_第9张图片

IntelliJ IDEA创建一个spark的项目_第10张图片修改pom.xml文件,在 前面增加 依赖项:

这个pom是我本机的,不太明白都是干啥的,所以查了文档,加了一些备注,后面再逐步明细吧




  4.0.0

  
  testNewProject1
  testNewProject1
  pom
  1.0-SNAPSHOT

  
  
    scala
  

  
  
    UTF-8
    UTF-8
    1.8
    2.11.12
    1.8
    1.8
    3.3.0-cdh6.3.1
    3.3.0
    2.1.0
    2.1.1
    2.4.0
    2.4.0
    3.3
    1.0.0-cdh6.3.1
    2.1.0-cdh6.3.1
    0.11.0.1
    2.1.1
    1.10.0-cdh6.3.1
    1.2.1
    0.10
    18.0
    2.8.2
    5.1.34
    11.1.0.7.0
    3.8.1
    1.2.62
    1.71
  


  
    
      
      
        
          net.alchim31.maven
          scala-maven-plugin
          3.2.1
        
        
          org.apache.maven.plugins
          maven-compiler-plugin
          2.3.1
        
      
    

  

  
  
    
      apache.snapshots
      Apache Snapshot Repository
      https://repository.apache.org/content/repositories/snapshots/
    
    
      cdh.repo
      Cloudera Repositories
      https://repository.cloudera.com/artifactory/cloudera-repos
      
        false
      
    
    
      scala-tools.org
      Scala-tools Maven2 Repository
      http://scala-tools.org/repo-releases
    
  

  
    
      scala-tools.org
      Scala-tools Maven2 Repository
      http://scala-tools.org/repo-releases
    
    
      cloudera-repos
      Cloudera Repos
      https://repository.cloudera.com/artifactory/cloudera-repos/
    
  

  
  
    
      junit
      junit
      3.8.1
      test
    
    
    
    
      org.apache.spark
      spark-core_2.11
      ${spark2.version}
      
    
    
      org.apache.spark
      spark-sql_2.11
      ${spark2.version}
      
    

    
      com.alibaba
      fastjson
      ${fast.version}
    
    
    
      org.apache.hive
      hive-jdbc
      1.2.1
      
        
          org.eclipse.jetty.aggregate
          jetty-all
        
        
          org.apache.hive
          hive-shims
        
      
    
    
      org.mongodb.spark
      mongo-spark-connector_2.11
      2.3.0
    
    
      org.mongodb
      mongo-java-driver
      3.8.0
    
    
      org.mongodb
      casbah_2.10
      3.1.1
      pom
    
    
      org.apache.spark
      spark-hive_2.11
      2.4.0
    
    
      org.apache.hive
      hive-exec
      2.1.1
    
    
      mysql
      mysql-connector-java
      5.1.46
    
    
      commons-io
      commons-io
      2.6
    
    
      com.crealytics
      spark-excel_2.11
      0.12.2
    
  


然后 右键项目中的 pom.xml 文件 -》Maven -》reload project 下载依赖包:

IntelliJ IDEA创建一个spark的项目_第11张图片

5.编写WordCount代码

右键 Main 目录 -》 New -》 Directory ,目录名称为: scala

右键 scala 目录 -》Make Directory as -》Generate Sources Root

IntelliJ IDEA创建一个spark的项目_第12张图片

 右键 scala 目录-》New -》scala class -》 object ,名称为:WordCoun

这里有个诡异的事情,我右键后,找不到scala的创建,然后使用file创建了个文件,文件名后缀.scala,执行后删除该文件,再右键新建的时候,可以创建scala的object了,很神奇!!!

6.出现的异常

1. 报错Exception in thread "main" java.lang.ClassNotFoundException: oracle.jdbc.driver.OracleDriver

写了一个scala来测试项目是否正常,主体逻辑是连接oracle,查询一个表,展示到工作台

但是报错:

Exception in thread "main" java.lang.ClassNotFoundException: oracle.jdbc.driver.OracleDriver

很奇怪,之前项目里面是可以正常使用的,但是新的不行,对比了以下,发现新项目的External Libraies中没有Oracle

试了手动在Project structure中导入,刷新Libraries等,依然报错。

并且发现本地仓库中有这个Oracle驱动类的。

最后,想到是不是pom中没加,手动加上,idea自动导入到了Libraries,程序可以正常运行了。

所以可见,External Libraries中的类是根据pom来导入的。

        
            com.oracle
            ojdbc6
            11.1.0.7.0
        

说一下猜测:

        com.oracle:是该类的路径

        ojdbc6:类名,但是时间上也是路径下的文件夹

        11.1.0.7.0:版本,感觉也是类名下的文件夹

        因为,这个驱动jar就是放在这个路径下的

                E:\repository\com\oracle\ojdbc6\11.1.0.7.0

        而 E:\repository 这个路径是我在file->setting->Build,Execution,Deployment->Build Tool->Maven的Local repository中设置的

你可能感兴趣的:(intellij-idea,spark,java)