不多說,直接上干貨!
對於初學者來說,建議你先玩玩這個免費的社區版,但是,一段時間,還是去玩專業版吧,這個很簡單哈,學聰明點,去搞到途徑激活!可以看我的博客。
包括:
IntelliJ IDEA(Community)的下載
IntelliJ IDEA(Community)的安裝
IntelliJ IDEA(Community)中的scala插件安裝
用SBT方式來創建工程 或 選擇Scala方式來創建工程
本地模式或集群模式

我們知道,對於開發而言,IDE是有很多個選擇的版本。如我們大部分人經常用的是如下。
Eclipse *版本
Eclipse *下載

而我們知道,對於spark的scala開發啊,有為其專門設計的eclipse,Scala IDE for Eclipse

Scala IDE for Eclipse的下載、安裝和WordCount的初步使用(本地模式和集群模式)
這里,我們知道,spark的開發可以通過IntelliJ IDEA或者Scala IDE for Eclipse,包括來構建spark開發環境和源碼閱讀環境。由於IntelliJ IDEA對scala的支持更好,所以目前spark開發團隊使用IntelliJ IDEA作為開發環境。強烈推薦!
1、IntelliJ IDEA(Community)的下載
下載鏈接: http://www.jetbrains.com/idea/download/

一般,我們使用選擇免費的社區版就好了,不過Apache的貢獻者可以免費獲得商業發行版的使用權。




我們找歷史版本,Windows7下安裝IntelliJ IDEA Community Edition 2016.1.3(64)。


2、IntelliJ IDEA(Community)的安裝





答案就是在:http://www.oschina.net/question/227259_2160359?fromerr=GzBpdLWq
Idea 201*.*之后的64位需要JDK1.8了。很多都是需要jdk1.8。
而我的,

所以,就一直出現,不出來64位選擇的問題。
而,Hadoop那邊,一般以jdk1.7為主。為穩定。
為此,添加jdk1.8。









C:\Program Files\Java\jdk1.8.0_66

至於,CLASSPTH、PATH就不需了。
同時,存在,jdk1.7和jdk1.8。
則java -verison,得到,

這里啊,要注意下,是以jdk1.8了,因為,高級版本會覆蓋掉低級版本,當然,我留下它,是因為為我的hadoop-2.6.0版本着想,最近啊,2016年9月3日,hadoop-3.*出來了,以后的趨勢肯定是要以jdk1.8了、
現在,來安裝




保存位置,不喜歡安裝到系統盤的話,就選擇到其它的位置

D:\SoftWare\IntelliJ IDEA\IntelliJ IDEA Community Edition 2016.1.4
創建桌面快捷方式,我只選一個64位的夠了;
注意:如果你的JDK是32位的,Tomcat是32位的,估計要使用32位的才行;
創建擴展名關聯:都選上吧 ;



安裝到這里就完成了,但接下來還有一些步驟需要配置


如果你之前安裝過早期版本的,想把之前的配置應用到新版本就選則上面的,沒有?
那就跟我選擇一樣的吧!
3、IntelliJ IDEA(Community)的使用
在這之前,先在本地里安裝好java和scala


這個必須要同意,不然的話我們安裝它干嘛!

主題皮膚設置,看你喜歡哪一種吧!


可以根據你的需要調整定制需要的特性:

這里可以安裝Scala和IdeaVim支持,但我試了幾次,根本安裝不上;(其實啊,這里可以安裝的上,當然,有時候會安裝不上)




為IDEA安裝scala,這個過程是是IDEA自動化的插件管理,所以點擊后會自動下載。
說明的是:我們是安裝了scala2.10.4,為什么還要在IDEA里還要安裝scala呢?
而不是IDEAl里本身開發支持的插件的版本。
則,現在已經安裝好了。這一步,叫做,在IntelliJ IDEA里安裝scala插件,當然,可以在安裝IntelliJ IDEA就將scala插件安裝好,或者,也可以在這一步沒安裝成功,之后,再來補安裝scala插件。
具體,如何補安裝scala插件,如下。
啟動界面,挺酷的

先選擇Create New Project 創建一個空項目看看吧


補安裝scala插件






自動下載scala插件了,然后自動安裝后重啟就會生效了!
創建工程
File -> New -> Project

若是SBT方式,
參考了博客
http://blog.csdn.net/stark_summer/article/details/42460527
想說的是,SBT是為scala專門而設計的,但是,一般很多人還是用的是maven。
我這里,選擇Scala方式,來創建,






創建,需要一段時間

即,在以上過程中,模仿JDK1.8.x和scala2.10.4

通過File –> Project Steuccture 來設置工程的Libraries核心是添加Spark的jar


選擇,java,我們這里導入spark的jar包,為什么要選擇java的選項呢?這里是從jvm的角度考慮的
添加Spark的jar依賴spark-1.5.2-bin-hadoop2.6.tgz里的lib目錄下的spark-assembly-1.5.2-hadoop2.6.0.jar
注意,我們是在windows里開發,下載和解壓的是linux版本(如spark-1.6.0-bin-hadoop2.6.tgz)


該包可以通過sbt/sbt assembly命令生成,這個命令相當於將spark的所有依賴包和spark源碼打包為一個整體。


其實,這是一步拷貝的過程



需要一段時間

成功!
src -> New -> Package


New -> Scala Class



本地模式和集群模式的代碼,這里我不多贅述。
(1)本地運行
編寫完Scala程序后,可以直接在IntelliJ IDEA中以本地(local)模式運行。
在IntelliJ IDEA中,點擊Run 按鈕,



或者
有的時候,會是如下情況:
在IntelliJ IDEA中點擊Run/Debug Configuration按鈕,在其下拉列表選擇Edit Configurations選項。

在Run輸入選擇界面中,在輸入框Program arguments中輸入main函數的輸入參數local,即為本地單機執行spark應用。

然后點擊選擇需要運行的類,點擊Run運行spark應用程序。

由此,可見,本地模式成功!
集群模式
先開啟hadoop集群

50070界面


7070界面





接下來,繼續打包,使用 Project Structure的Artifacts,


Artifacts -> + -> JAR + From modules with dependencies...







接下來,建立Build。






spark@SparkSingleNode:/usr/local/spark/spark-1.5.2-bin-hadoop2.6/bin$ ./spark-submit --master spark://SparkSingleNode:7077 /home/spark/WordCount.jar

開始之前
正在進行

完成


4040界面


其實啊,在集群里,模板就是如下
val file = spark.textFile("hdfs://...”)
val counts = file.flatMap("line => line.spilt(" "))
.map(word => (word,1))
.reduceByKey(_+_)
counts.saveAsTextFile("hdfs://...”)
IntelliJ IDEA的黑白色背景切換
File -> Setting -> Editor -> Colors & Fonts


即,默認是白色的,那么,點擊yes,則默認變成黑色了。

變成

想說的是,當然,這背景版本給出的是黑色和白色這兩種選擇,其實,自己可以將圖片上傳作為背景。
總結
WordCount.scala(本地模式)
1 package com.zhouls.spark 2 3 /** 4 * Created by Administrator on 2016/9/18. 5 */ 6 7 package com.zhouls.spark 8 9 import org.apache.spark.SparkConf 10 import org.apache.spark.SparkContext 11 12 13 object WordCount { 14 def main(args: Array[String]): Unit = { 15 /* 16 * 第1步:創建spark的配置對象sparkconf,設置spark程序的運行時的配置信息, 17 * 例如說通過setMaster來設置程序要鏈接的spark集群的master的URL,如果設置為local,則代表spark程序在本地運行, 18 * 特別適合於機器配置條件非常差(例如只有1G內存)的初學者 19 */ 20 val conf = new SparkConf()//創建SparkConf對象 21 conf.setAppName("Wow,My First Spark App!")//設置應用程序的名稱,在程序運行的監控界面可以看到名稱 22 conf.setMaster("local")//此時,程序在本地運行,不需要安裝spark集群 23 24 /* 25 * 第2步:創建SparkContext對象 26 * SparkContext是spark程序所有功能的唯一入口,無論是采用scala、java、pthon、R等都必須有一個SparkContext 27 * SparkContext核心作用:初始化spark應用程序運行所需要的核心組件、包括DAGScheduler、TaskScheduler、SchedulerBackend 28 * 同時還會負責spark程序往master注冊程序等 29 * SparkContext是整個spark應用程序中最為至關重要的一個對象 30 */ 31 val sc = new SparkContext(conf) 32 33 /* 34 * 第3步:根據具體的數據源(HDFS、HBase、Local FS、DB、S3等)通過SparkContext來創建RDD 35 * RDD的創建基本有三種方式:根據外部的數據來源(如HDFS)、根據Scala集合、由其它的RDD操作數據會被RDD划分成 36 * 一系列的Partitions,分配到每個Partition的數據屬於一個Task的處理范疇 37 */ 38 // val lines:RDD[String] = sc.textFile("D://SoftWare//spark-1.6.2-bin-hadoop2.6//README.md", 1)//path指的是文件路徑,minPartitions指的是最小並行度 39 val lines = sc.textFile("D://SoftWare//spark-1.6.2-bin-hadoop2.6//README.md", 1)//path指的是文件路徑,minPartitions指的是最小並行度 40 41 /* 42 * 第4步:對初始的RDD進行Transformation級別的處理,例如map、filter等高階函數等的編程,來進行具體的數據計算 43 * 第4.1步:將每一行的字符串拆分成單個的單詞 44 */ 45 val words = lines.flatMap{ line => line.split(" ")}//對每一行的字符串進行單詞拆分並把所有行的拆分結果通過flat合並成為一個 46 47 /* 48 * 4.2步:在單詞拆分的基礎上對每個單詞實例計數為1,也就是 word => (word,1) 49 */ 50 val pairs = words.map { word => (word,1) } 51 52 /* 53 * 4.3步:在每個單詞實例計數為1基礎之上統計每個單詞在文件中出現的總次數 54 */ 55 val wordCounts = pairs.reduceByKey(_+_)//對相同的key,進行value的累計(包括local和reducer級別同時reduce) 56 wordCounts.foreach(wordNumberPair => println(wordNumberPair._1 + ":" + wordNumberPair._2)) 57 58 /* 59 * 第5步 60 */ 61 sc.stop(); 62 } 63 64 }
WordCount_Cluster.scala(集群模式)
1 package com.zhouls.spark 2 3 /** 4 * Created by Administrator on 2016/9/18. 5 */ 6 7 import org.apache.spark.SparkConf 8 import org.apache.spark.SparkContext 9 10 11 object WordCount_Cluster { 12 def main(args: Array[String]): Unit = { 13 /* 14 * 第1步:創建spark的配置對象sparkconf,設置spark程序的運行時的配置信息, 15 * 例如說通過setMaster來設置程序要鏈接的spark集群的master的URL,如果設置為local,則代表spark程序在本地運行, 16 * 特別適合於機器配置條件非常差(例如只有1G內存)的初學者 17 */ 18 val conf = new SparkConf()//創建SparkConf對象 19 conf.setAppName("Wow,My First Spark App!")//設置應用程序的名稱,在程序運行的監控界面可以看到名稱 20 conf.setMaster("spark://SparkSingleNode:7077")//此時,程序在本地運行,不需要安裝spark集群 21 22 /* 23 * 第2步:創建SparkContext對象 24 * SparkContext是spark程序所有功能的唯一入口,無是采用scala、java、pthon、R等都必須有一個SparkContext 25 * SparkContext核心作用:初始化spark應用程序運行所需要的核心組件、包括DAGScheduler、TaskScheduler、SchedulerBackend 26 * 同時還會負責spark程序往master注冊程序等 27 * SparkContext是整個spark應用程序中最為至關重要的一個對象 28 */ 29 val sc = new SparkContext(conf) 30 31 /* 32 * 第3步:根據具體的數據源(HDFS、HBase、Local FS、DB、S3等)通過SparkContext來創建RDD 33 * RDD的創建基本有三種方式:根據外部的數據來源(如HDFS)、根據Scala集合、由其它的RDD操作數據會被RDD划分成 34 * 一系列的Partitions,分配到每個Partition的數據屬於一個Task的處理范疇 35 */ 36 // val lines:RDD[String] = sc.textFile("D://SoftWare//spark-1.6.2-bin-hadoop2.6//README.md", 1)//path指的是文件路徑,minPartitions指的是最小並行度 37 // val lines = sc.textFile("D://SoftWare//spark-1.6.2-bin-hadoop2.6//README.md", 1)//path指的是文件路徑,minPartitions指的是最小並行度 38 val lines = sc.textFile("hdfs://SparkSingleNode:9000/README.md", 1)//沒必要會感知上下文 39 // val lines = sc.textFile("/README.md", 1)//path指的是文件路徑,minPartitions指的是最小並行度 40 // val lines = sc.textFile("/README.md")//為什么,這里不寫並行度了呢?因為,hdfs會有一個默認的 41 /* 42 * 第4步:對初始的RDD進行Transformation級別的處理,例如map、filter等高階函數等的編程,來進行具體的數據計算 43 * 第4.1步:將每一行的字符串拆分成單個的單詞 44 */ 45 val words = lines.flatMap{ line => line.split(" ")}//對每一行的字符串進行單詞拆分並把所有行的拆分結果通過flat合並成為一個 46 47 /* 48 * 4.2步:在單詞拆分的基礎上對每個單詞實例計數為1,也就是 word => (word,1) 49 */ 50 val pairs = words.map { word => (word,1) } 51 52 /* 53 * 4.3步:在每個單詞實例計數為1基礎之上統計每個單詞在文件中出現的總次數 54 */ 55 val wordCounts = pairs.reduceByKey(_+_)//對相同的key,進行value的累計(包括local和reducer級別同時reduce) 56 wordCounts.collect.foreach(wordNumberPair => println(wordNumberPair._1 + ":" + wordNumberPair._2)) 57 58 /* 59 * 第5步 60 */ 61 sc.stop(); 62 } 63 64 }
擴展
IntelliJ IDEA(Ultimate版本)的下載、安裝和WordCount的初步使用(本地模式和集群模式)
同時,大家可以關注我的個人博客:
http://www.cnblogs.com/zlslch/ 和 http://www.cnblogs.com/lchzls/ http://www.cnblogs.com/sunnyDream/
詳情請見:http://www.cnblogs.com/zlslch/p/7473861.html
人生苦短,我願分享。本公眾號將秉持活到老學到老學習無休止的交流分享開源精神,匯聚於互聯網和個人學習工作的精華干貨知識,一切來於互聯網,反饋回互聯網。
目前研究領域:大數據、機器學習、深度學習、人工智能、數據挖掘、數據分析。 語言涉及:Java、Scala、Python、Shell、Linux等 。同時還涉及平常所使用的手機、電腦和互聯網上的使用技巧、問題和實用軟件。 只要你一直關注和呆在群里,每天必須有收獲
對應本平台的討論和答疑QQ群:大數據和人工智能躺過的坑(總群)(161156071)






