欢迎来到贱贱的博客

扩大
缩小

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)验证

好了,到此结束,加油骚年

  

posted on 2018-10-23 09:54  L的存在  阅读(1804)  评论(0编辑  收藏  举报

导航