spark學習之IDEA配置spark並wordcount提交集群


這篇文章包括以下內容

(1)IDEA中scala的安裝

(2)hdfs簡單的使用,沒有寫它的部署

(3) 使用scala編寫簡單的wordcount,輸入文件和輸出文件使用參數傳遞

(4)IDEA打包和提交方法

一  IDEA中scala的安裝

(1)   下載IEDA 裝jdk

(2)   啟動應用程序 選擇插件(pluigin)查看scala版本,然后去對應的網站下載https://plugins.jetbrains.com/plugin/1347-scala

(4)   將剛才下載的scala zip文件移動到IDEA的plugin下面

(5)   回到啟動頁面 選擇plugin

選擇從磁盤安裝,然后重啟

(6)新建項目 scala項目 如果沒有scala sdk 那么windows下一個導入進去(注意版本一致)

二 提交wordcount並提交jar

(1) 新建Maven項目 

file->project->maven->next-->設置工程名稱和路徑(路徑不要為中文)--->完成

(2)將pol導入依賴,粘貼下面代碼以后,需要點擊右側的maven project並刷新

  1 <?xml version="1.0" encoding="UTF-8"?>
  2 <project xmlns="http://maven.apache.org/POM/4.0.0"
  3          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  5     <modelVersion>4.0.0</modelVersion>
  6 
  7     <groupId>com.xuebusi</groupId>
  8     <artifactId>spark</artifactId>
  9     <version>1.0-SNAPSHOT</version>
 10 
 11     <properties>
 12         <maven.compiler.source>1.7</maven.compiler.source>
 13         <maven.compiler.target>1.7</maven.compiler.target>
 14         <encoding>UTF-8</encoding>
 15 
 16         <!-- 這里對jar包版本做集中管理 -->
 17         <scala.version>2.10.6</scala.version>
 18         <spark.version>1.6.2</spark.version>
 19         <hadoop.version>2.6.4</hadoop.version>
 20     </properties>
 21 
 22     <dependencies>
 23         <dependency>
 24             <!-- scala語言核心包 -->
 25             <groupId>org.scala-lang</groupId>
 26             <artifactId>scala-library</artifactId>
 27             <version>${scala.version}</version>
 28         </dependency>
 29         <dependency>
 30             <!-- spark核心包 -->
 31             <groupId>org.apache.spark</groupId>
 32             <artifactId>spark-core_2.10</artifactId>
 33             <version>${spark.version}</version>
 34         </dependency>
 35 
 36         <dependency>
 37             <!-- hadoop的客戶端,用於訪問HDFS -->
 38             <groupId>org.apache.hadoop</groupId>
 39             <artifactId>hadoop-client</artifactId>
 40             <version>${hadoop.version}</version>
 41         </dependency>
 42     </dependencies>
 43 
 44     <build>
 45         <sourceDirectory>src/main/scala</sourceDirectory>
 46         <testSourceDirectory>src/test/scala</testSourceDirectory>
 47         <plugins>
 48             <plugin>
 49                 <groupId>net.alchim31.maven</groupId>
 50                 <artifactId>scala-maven-plugin</artifactId>
 51                 <version>3.2.2</version>
 52                 <executions>
 53                     <execution>
 54                         <goals>
 55                             <goal>compile</goal>
 56                             <goal>testCompile</goal>
 57                         </goals>
 58                         <configuration>
 59                             <args>
 60                                 <arg>-make:transitive</arg>
 61                                 <arg>-dependencyfile</arg>
 62                                 <arg>${project.build.directory}/.scala_dependencies</arg>
 63                             </args>
 64                         </configuration>
 65                     </execution>
 66                 </executions>
 67             </plugin>
 68 
 69             <plugin>
 70                 <groupId>org.apache.maven.plugins</groupId>
 71                 <artifactId>maven-shade-plugin</artifactId>
 72                 <version>2.4.3</version>
 73                 <executions>
 74                     <execution>
 75                         <phase>package</phase>
 76                         <goals>
 77                             <goal>shade</goal>
 78                         </goals>
 79                         <configuration>
 80                             <filters>
 81                                 <filter>
 82                                     <artifact>*:*</artifact>
 83                                     <excludes>
 84                                         <exclude>META-INF/*.SF</exclude>
 85                                         <exclude>META-INF/*.DSA</exclude>
 86                                         <exclude>META-INF/*.RSA</exclude>
 87                                     </excludes>
 88                                 </filter>
 89                             </filters>
 90                             <!-- 由於我們的程序可能有很多,所以這里可以不用指定main方法所在的類名,我們可以在提交spark程序的時候手動指定要調用那個main方法 -->
 91                             <!--
 92                             <transformers>
 93                                 <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
 94                                     <mainClass>com.xuebusi.spark.WordCount</mainClass>
 95                                 </transformer>
 96                             </transformers>
 97                             -->
 98 
 99                         </configuration>
100                     </execution>
101                 </executions>
102             </plugin>
103         </plugins>
104     </build>
105 </project>

這個時候在左側的依賴就會出現很多maven包,注意要有網絡哈

(2)修改pol部分內容如下,錯誤的內容會出現紅色的字樣哦

在pom.xml文件中還有錯誤提示,因為src/main/和src/test/這兩個目錄下面沒有scala目錄。

(3) 右擊項目src,新建scala class,選擇object

(4) 編寫代碼

 1 import org.apache.spark.rdd.RDD
 2 import org.apache.spark.{SparkConf, SparkContext}
 3 
 4 /**
 5   * Created by SYJ on 2017/1/23.
 6   */
 7 object WordCount {
 8   def main(args: Array[String]) {
 9     //創建SparkConf
10     val conf: SparkConf = new SparkConf()
11     //創建SparkContext
12     val sc: SparkContext = new SparkContext(conf)
13     //從文件讀取數據
14     val lines: RDD[String] = sc.textFile(args(0))
15     //按空格切分單詞
16     val words: RDD[String] = lines.flatMap(_.split(" "))
17     //單詞計數,每個單詞每出現一次就計數為1
18     val wordAndOne: RDD[(String, Int)] = words.map((_, 1))
19     //聚合,統計每個單詞總共出現的次數
20     val result: RDD[(String, Int)] = wordAndOne.reduceByKey(_+_)
21     //排序,根據單詞出現的次數排序
22     val fianlResult: RDD[(String, Int)] = result.sortBy(_._2, false)
23     //將統計結果保存到文件
24     fianlResult.saveAsTextFile(args(1))
25     //釋放資源
26     sc.stop()
27   }
28 }

(5) 打包
將編寫好的WordCount程序使用Maven插件打成jar包,打包的時候也要保證電腦能夠聯網,因為Maven可能會到中央倉庫中下載一些依賴:

雙擊package

打包成功提示

(6) 在jar包上面右擊 copy path找到jar在win下的路徑並上傳到集群

(7) 啟動hdfs 因為只用到hdfs,創建一個目錄 hdfs dfs -mkdir /wc 然后創建一個txt文件

/hadoop/sbin/start-dfs.sh

 (8)啟動集群

/spark/sbin/start-all.sh

 (9) jps查看master和worker是否都起來

(10) 提交給集群 后面兩個參數分別為輸入輸出文件

bin/spark-submit --class spark.wordCount --executor-memory 512m --total-executor-cores 2 /home/hadoop/hadoop/spark-2.3.1-bin-hadoop2.7/spark_testJar/ljSparkCount-1.0-SNAPSHOT.jar hdfs://slave104:9000/wc hdfs://slave104:9000/wc/output

(11)驗證

好了,到此結束,加油騷年

  


免責聲明!

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



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