IntelliJ IDEA(Community版本)的下載、安裝和WordCount的初步使用(本地模式和集群模式)


 

  不多說,直接上干貨!

  對於初學者來說,建議你先玩玩這個免費的社區版,但是,一段時間,還是去玩專業版吧,這個很簡單哈,學聰明點,去搞到途徑激活!可以看我的博客。

 

 

 

包括:

   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) 

 

 

 

 

 

 

 

 

 

 

 

 


 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM