全國咨詢/投訴熱線:400-618-4000

IDEA工具開發WordCount單詞計數程序的相關步驟有哪些?

更新時間:2020年12月17日16時04分 來源:傳智教育 瀏覽次數:

好口碑IT培訓

  Spark作業與MapReduce作業同樣可以先在本地開發測試,本地執行模式與集群提交模式,代碼的業務功能相同,因此本書大多數采用本地開發模式。下面講解使用IDEA工具開發WordCount單詞計數程序的相關步驟。

  1.創建Maven項目,新建資源文件夾

  創建一個Maven工程項目,名為“spark_chapter02”。項目創建好后,在main和test目錄下分別創建一個名稱為scala的文件夾,創建好的目錄結構如圖1所示。

  圖1 Spark_chapter02項目目錄結構

  在圖1中,選中main目錄下的scala文件夾,單擊右鍵選擇【Mark Directory as】→【Sources Root】,將文件夾標記為資源文件夾類型;同樣的,選中test目錄下的scala文件夾,單擊右鍵選擇【Mark Directory as】→【Test Sources Root】將文件夾標記為測試資源文件夾類型。其中,資源文件夾中存放項目源碼文件,測試文件夾中存放開發中測試的源碼文件。

  2.添加Spark相關依賴、打包插件

  Maven是一個項目管理工具,雖然我們剛才創建好了項目,但是卻不能識別Spark類,因此,我們需要將Spark相關的依賴添加到Maven項目中。打開pom.xml文件,在該文件中添加的依賴如下所示:


     
      2.11.8
      2.7.4
      2.3.2
    
    
      
     
       org.scala-lang
       scala-library
       ${scala.version}
     
     
     
       org.apache.spark
       spark-core_2.11
       ${spark.version}
     
     
     
       org.apache.hadoop
       hadoop-client
       ${hadoop.version}
     
   

  在上述配置參數片段中,標簽用來設置所需依賴的版本號,其中在標簽中添加了Scala、Hadoop和Spark相關的依賴,設置完畢后,相關Jar文件會被自動加載到項目中。

  3.編寫代碼,查看結果

  在main目錄下的scala文件夾中,創建WordCount.scala文件用于詞頻統計,代碼如文件1所示。

  文件1 WordCount.scala

  import org.apache.spark.rdd.RDD
  import org.apache.spark.{SparkConf, SparkContext}
  //編寫單詞計數
  object WordCount {
    def main(args: Array[String]): Unit = {
       //1.創建SparkConf對象,設置appName和Master地址
      val sparkconf = new 
        SparkConf().setAppName("WordCount").setMaster("local[2]")
      //2.創建SparkContext對象,它是所有任務計算的源頭,
     // 它會創建DAGScheduler和TaskScheduler
     val sparkContext = new SparkContext(sparkconf)
     //3.讀取數據文件,RDD可以簡單的理解為是一個集合
     // 集合中存放的元素是String類型
     val data : RDD[String] = 
                  sparkContext.textFile("D:\\word\\words.txt")
     //4.切分每一行,獲取所有的單詞
     val words :RDD[String] = data.flatMap(_.split(" "))
     //5.每個單詞記為1,轉換為(單詞,1)
     val wordAndOne :RDD[(String, Int)] = words.map(x =>(x,1))
     //6.相同單詞匯總,前一個下劃線表示累加數據,后一個下劃線表示新數據
     val result: RDD[(String, Int)] = wordAndOne.reduceByKey(_+_)
     //7.收集打印結果數據
     val finalResult: Array[(String, Int)] = result.collect()
     println(finalResult.toBuffer)
     //8.關閉sparkContext對象
     sparkContext.stop()
   }
 }

  上述代碼中,第7-11行代碼創建SparkContext對象并通過SparkConf對象設置配置參數,其中Master為本地模式,即可以在本地直接運行;第14-24行代碼中,讀取數據文件,將獲得的數據按照空格切分,將每個單詞記作(單詞,1),之后若出現相同的單詞就將次數累加,最終打印數據結果;第26行代碼表示關閉SparkContext對象資源。執行代碼成功后,在控制臺可以查看輸出結果,如圖2所示。

  圖2 IDEA開發WordCount

  從圖2可以看出,文本中的單詞已經成功統計了出現的次數。


猜你喜歡:

Scala在使用聲明值和變量時的注意事項

大數據的兩種計算框架對比,哪個更適合開發?

Scala算術操作符重載怎樣使用?

黑馬程序員大數據培訓課程 

傳智教育大數據培訓課程 

人妻系列无码专区_漂亮人妻被中出中文字幕_人妻中文制服巨乳中文