如何使用 IntelliJ IDEA 編寫 Spark 應(yīng)用程序(Scala + Maven)
使用 IntelliJ IDEA 編寫 Spark 應(yīng)用程序(Scala + Maven)
本教程演示如何使用 IntelliJ IDEA 和 Maven 編寫 Spark 應(yīng)用程序(以 WordCount 程序?yàn)槔?。運(yùn)行環(huán)境為 Ubuntu 16.04。
環(huán)境準(zhǔn)備
安裝 IntelliJ IDEA
(1)從 IntelliJ IDEA 官網(wǎng) 下載安裝包。
(2)解壓安裝包并重命名:
cd ~/下載 sudo tar -zxvf ideaIU-2016.3.4.tar.gz sudo mv idea-IU-163.12024.16 /usr/local/Intellij
(3)運(yùn)行 IDEA:
cd /usr/local/Intellij/bin ./idea.sh
(4)選擇 Evaluate for free 使用試用版。
(5)為快捷啟動(dòng)創(chuàng)建桌面圖標(biāo):
cd /usr/share/applications sudo gedit idea.desktop
在文件中添加以下內(nèi)容:
[Desktop Entry] Encoding=UTF-8 Version=1.0 Name=IntelliJ IDEA GenericName=Java IDE Comment=IntelliJ IDEA is a code-centric IDE focused on developer productivity. Exec=/usr/local/Intellij/bin/idea.sh Icon=/usr/local/Intellij/bin/idea.png Terminal=false Type=Application Categories=Development;IDE
(6)重啟系統(tǒng)后,可在啟動(dòng)欄中搜索 IntelliJ IDEA。
配置 IntelliJ IDEA
安裝 Scala 插件
(1)打開(kāi) IDEA,依次選擇 File -> Settings -> Plugins。
(2)點(diǎn)擊 Install JetBrains Plugin,搜索并安裝 Scala 插件。
配置 JDK 和 Scala SDK
(1)打開(kāi) File -> Project Structure。
配置 JDK:
(2)點(diǎn)擊左側(cè) SDKs,添加系統(tǒng)安裝的 JDK(假設(shè)已安裝并配置 Java 環(huán)境)。
(3)配置 Scala SDK:
添加已安裝的 Scala,并選擇 Copy to Project Libraries。
創(chuàng)建 Maven 工程文件
新建工程
在 IDEA 主界面選擇 Create New Project。
選擇 Maven,點(diǎn)擊下一步。
填寫 GroupId 和 ArtifactId,例如:
GroupId: dblab
ArtifactId: WordCount
配置項(xiàng)目路徑,點(diǎn)擊 Finish。
配置工程
添加 Scala 框架
右鍵工程名稱,選擇 Add Framework Support。
勾選 Scala,點(diǎn)擊 OK。
設(shè)置 Sources Root
在 src 文件夾下創(chuàng)建名為 WordCount 的子文件夾。
右鍵該文件夾,選擇 Mark Directory as -> Sources Root。
編寫代碼
創(chuàng)建 Scala 文件
(1)在 WordCount 文件夾中右鍵,選擇 New -> Scala Class,創(chuàng)建名為 WordCount 的 object 類型文件。
(2)粘貼以下代碼
import org.apache.spark.SparkContext import org.apache.spark.SparkContext._ import org.apache.spark.SparkConf object WordCount { def main(args: Array[String]) { val inputFile = "file:///usr/local/spark/mycode/wordcount/word.txt" val conf = new SparkConf().setAppName("WordCount").setMaster("local") val sc = new SparkContext(conf) val textFile = sc.textFile(inputFile) val wordCount = textFile.flatMap(line => line.split(" ")) .map(word => (word, 1)) .reduceByKey((a, b) => a + b) wordCount.foreach(println) } }
配置 pom.xml
(1)清空 pom.xml 內(nèi)容,粘貼以下代碼:
<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>dblab</groupId> <artifactId>WordCount</artifactId> <version>1.0-SNAPSHOT</version> <properties> <spark.version>2.1.0</spark.version> <scala.version>2.11</scala.version> </properties> <dependencies> <dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-core_${scala.version}</artifactId> <version>${spark.version}</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.scala-tools</groupId> <artifactId>maven-scala-plugin</artifactId> <version>2.15.2</version> <executions> <execution> <goals> <goal>compile</goal> <goal>testCompile</goal> </goals> </execution> </executions> </plugin> <plugin> <artifactId>maven-compiler-plugin</artifactId> <version>3.6.0</version> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin> </plugins> </build> </project>
(2)右鍵項(xiàng)目名稱,選擇 Maven -> Reload Project。
運(yùn)行程序
運(yùn)行 WordCount
(1)打開(kāi) WordCount.scala 文件,在代碼窗口內(nèi)右鍵選擇 Run ‘WordCount’。
(2)確保輸入文件路徑 /usr/local/spark/mycode/wordcount/word.txt 存在,文件內(nèi)容示例:
hello world hello Hadoop
(3)查看終端輸出,結(jié)果類似:
(hello, 2) (world, 1) (Hadoop, 1)
打包為 Jar 文件
導(dǎo)出 Jar 包
(1)打開(kāi) File -> Project Structure。
(2)選擇 Artifacts -> + -> Jar -> From modules with dependencies。
(3)選擇 Main Class 為 WordCount。
(4)刪除不必要的文件,只保留 WordCount.jar 和 ‘WordCount’ compile output。
(5)點(diǎn)擊 Apply 和 OK。
(6)導(dǎo)出 Jar 文件:
Build -> Build Artifacts -> Build。導(dǎo)出的 Jar 包存儲(chǔ)在out/artifacts/WordCount_jar/WordCount.jar。 提交到 Spark 集群運(yùn)行
(1)將 Jar 包復(fù)制到指定路徑:
cp /path/to/WordCount.jar /home/hadoop
(2)使用 Spark 提交程序:
/usr/local/spark/bin/spark-submit --class WordCount /home/hadoop/WordCount.jar
(3)查看終端輸出,驗(yàn)證結(jié)果。
通過(guò)以上步驟,你已經(jīng)完成了使用 IntelliJ IDEA 和 Maven 編寫、運(yùn)行及打包一個(gè)簡(jiǎn)單的 Spark 應(yīng)用程序!
到此這篇關(guān)于使用 IntelliJ IDEA 編寫 Spark 應(yīng)用程序(Scala + Maven)的文章就介紹到這了,更多相關(guān)IDEA 編寫 Spark 應(yīng)用程序內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
將springboot項(xiàng)目生成可依賴的jar并引入到項(xiàng)目中的方法
SpringBoot項(xiàng)目默認(rèn)打包的是可運(yùn)行jar包,也可以打包成不可運(yùn)行的jar包,本文給大家介紹將springboot項(xiàng)目生成可依賴的jar并引入到項(xiàng)目中的方法,感興趣的朋友一起看看吧2023-11-11Spring?Boot?Admin?監(jiān)控指標(biāo)接入Grafana可視化的實(shí)例詳解
Spring Boot Admin2 自帶有部分監(jiān)控圖表,如圖,有線程、內(nèi)存Heap和內(nèi)存Non Heap,這篇文章主要介紹了Spring?Boot?Admin?監(jiān)控指標(biāo)接入Grafana可視化,需要的朋友可以參考下2022-11-11java的url方式、本地方式獲取json文件內(nèi)容
這篇文章給大家分享了java的url方式、本地方式獲取json文件內(nèi)容的實(shí)例代碼,有需要的朋友參考學(xué)習(xí)下。2018-07-07java開(kāi)發(fā)中嵌套類的詳解及實(shí)例
這篇文章主要介紹了 java開(kāi)發(fā)中嵌套類的詳解及實(shí)例的相關(guān)資料,一般把定義內(nèi)部類的外圍類成為包裝類(enclosing class)或者外部類,需要的朋友可以參考下2017-07-07Java獲取json數(shù)組對(duì)象的實(shí)例講解
下面小編就為大家分享一篇Java獲取json數(shù)組對(duì)象的實(shí)例講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-03-03SpringSecurityOAuth2實(shí)現(xiàn)微信授權(quán)登錄
微信的登錄功能是用戶注冊(cè)和使用微信的必經(jīng)之路之一,而微信授權(quán)登錄更是方便了用戶的登錄操作,本文主要介紹了SpringSecurityOAuth2實(shí)現(xiàn)微信授權(quán)登錄,感興趣的可以了解一下2023-09-09SpringMVC的注解@RequestMapping屬性及使用
這篇文章主要為大家介紹了SpringMVC注解@RequestMapping屬性及使用,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05Java實(shí)現(xiàn)獲取前、后N天日期的函數(shù)分享
本文給大家分享的是使用java實(shí)現(xiàn)的獲取當(dāng)前日期前后N天的函數(shù),非常的簡(jiǎn)單實(shí)用,有需要的小伙伴可以參考下。2015-03-03java實(shí)現(xiàn)哈夫曼壓縮的實(shí)例
這篇文章主要介紹了java實(shí)現(xiàn)哈夫曼壓縮的實(shí)例的相關(guān)資料,需要的朋友可以參考下2017-07-07