zoukankan      html  css  js  c++  java
  • 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)验证

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

      

  • 相关阅读:
    C#Type类中的IsAssignableFrom、IsInstanceOfType、IsSubclassOf
    C# IsAssignableFrom & IsInstanceOfType & IsSubclassOf & Is
    VS2017桌面应用程序打包成.msi或者.exe
    C# 10个常用特性
    ADO.NET 的六大对象及其关系图
    Expression表达式树(C#)
    表达式树 Expression Trees
    特性 Attribute
    C# 特性(attribute)
    Vue中使用axios
  • 原文地址:https://www.cnblogs.com/lanjianhappy/p/9834952.html
Copyright © 2011-2022 走看看