用idea在Windows下构建spark2.2.0的环境

来源:互联网 发布:moment.js vue 编辑:程序博客网 时间:2024/05/22 11:39

首先,本人菜鸡一只,如果有说的不对的地方,还请各位指点指点!如果有什么问题也可以相互交流,给我留言或者私信~

说明下,之前的环境是:

jdk-1.7,scala-2.10.4,spark-1.6.1,开发工具是idea

然后鄙人想测试下最新的spark2.2.0的版本
因此基于之前的环境配置了些新的东西:

这是新的版本

jdk-1.8.0_77,spark-2.2.0,scala-2.11.8


思考:需要做的其实就是在idea中新建一个简单的java的maven项目,然后添加scala的sdk,然后修改pom文件(把spark的相关依赖添加进去)


一、

下载对应的工具:可以自行百度,去各自官网上下载,然后这里我提供个java+scala的包,免安装版的(手动配置环境变量)

scala2.11.8下载点:(下载对应版本)http://www.scala-lang.org/download/2.11.8.html

java的我不用说了吧。

spark就官网下载下就可以了,甚至Windows上运行spark直接都不用下载,直接maven添加pom就可以了,最后会给大家提供一个pom简单的


二、

接下来,最好配置下环境变量,就JAVA_HOME,SCALA_HOME。

三、

随便创建一个java的maven项目,然后添加scala的环境




这样你就能在这个maven项目中写scala代码了。


四、

修改pom文件,这里提供一个简单的给大家

<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0"         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">    <modelVersion>4.0.0</modelVersion>    <groupId>spark2.2</groupId>    <artifactId>spark2.2</artifactId>    <version>1.0-SNAPSHOT</version>    <properties>        <scala.version>2.11.8</scala.version>        <scala.binary.version>2.11</scala.binary.version>        <spark.version>2.2.0</spark.version>    </properties>    <repositories>        <repository>            <id>nexus-aliyun</id>            <name>Nexus aliyun</name>            <url>http://maven.aliyun.com/nexus/content/groups/public</url>        </repository>    </repositories>    <dependencies>    <!-- https://mvnrepository.com/artifact/org.apache.spark/spark-core_2.11 -->    <dependency>        <groupId>org.apache.spark</groupId>        <artifactId>spark-core_2.11</artifactId>        <version>${spark.version}</version>    </dependency>        <dependency>            <groupId>org.apache.spark</groupId>            <artifactId>spark-sql_2.11</artifactId>            <version>${spark.version}</version>        </dependency>        <dependency>            <groupId>org.apache.spark</groupId>            <artifactId>spark-streaming_2.11</artifactId>            <version>${spark.version}</version>        </dependency></dependencies><build><plugins>    <plugin>        <artifactId>maven-assembly-plugin</artifactId>        <version>2.3</version>        <configuration>            <classifier>dist</classifier>            <appendAssemblyId>true</appendAssemblyId>            <descriptorRefs>                <descriptor>jar-with-dependencies</descriptor>            </descriptorRefs>        </configuration>        <executions>            <execution>                <id>make-assembly</id>                <phase>package</phase>                <goals>                    <goal>single</goal>                </goals>            </execution>        </executions>    </plugin></plugins></build></project>

这只是最简单的core,sql,streaming三个模块,如果要添加其他的,去中央仓库查找,或者去spark的官网上找对应的模块(注意版本)

如果你有读取各种各样类型的数据源的需求,又不知道jar在哪里,

请使用如下的两个网站:

https://spark-packages.org/
https://github.com/databricks/

五、

然后就可以创建一个scala的object来测试了!

(附上官网的案例,或者你可以自己随便写,和1.x的版本的区别就是多了个SparkSession)。

import org.apache.spark.sql.SparkSessionobject sparksessionDemo {  def main(args: Array[String]) {    val logFile = "data/groupsort.txt" // Should be some file on your system    val spark = SparkSession.builder.master("local").appName("Simple Application").getOrCreate()    val logData = spark.read.textFile(logFile).cache()    val numAs = logData.filter(line => line.contains("a")).count()    val numBs = logData.filter(line => line.contains("b")).count()    println(s"Lines with a: $numAs, Lines with b: $numBs")    spark.stop()  }  }

六、在环境调试中遇到的各自各样的报错,在此稍微整理下

1、java.lang.ClassNotFoundException: org.apache.spark.sql.SparkSession$

这个问题理论上来说应该是jar包有问题,要么是版本不对,要么是jar包没引入,就是说pom里面写的有问题,按照我上面给的模板去修改,应该是可以避免这个错误。

2、Exception in thread "main" java.lang.UnsupportedClassVersionError: org/apache/spark/network/util/ByteUnit : Unsupported major.minor version 52.0

这个问题,其实是java的问题,就是你的scala2.11.8用的其实是jdk1.8的环境编译的,但是你的项目当中的jdk是1.7的结果就会导致这个问题,把这个项目的jdk换成1.8的就可以。




3、Error:scalac: bad option: '-make:transitive'


当版本都确定好了之后,又报了这个错误,很烦!

这个是idea上写scala的关闭idea

解决方法如下:
-1、打开项目所在位置找到.idea这个文件夹,进入

-2、修改scala_compiler.xml文件

-3、删除掉参数行包含-make:transitive

-4、保存后退出编辑并重启idea打开项目

-5、再次运行,解决该问题


以上的东西,差不多就是鄙人这次搭建这个环境所遇到的问题,如果大家在测试的过程中,还有遇到一些奇奇怪怪的问题,欢迎一起探讨!~

阅读全文
0 0
原创粉丝点击