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

1 篇文章 0 订阅

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

说明下,之前的环境是:

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.SparkSession

object 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、再次运行,解决该问题


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

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值