用idea在Windows下構建spark2.2.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、再次執行,解決該問題