• 009 搭建Spark的maven本地windows开发环境以及测试


            在看完下面的细节之后,就会发现,spark的开发,只需要hdfs加上带有scala的IDEA环境即可。

        当run运行程序时,很快就可以运行结束。

            为了可以看4040界面,需要将程序加上暂定程序,然后再去4040上看程序的执行。

      新建的两种方式,第一种是当时老师教的,现在感觉有些土,但是毕竟是以前写的,不再删除,就自己在后面添加了第二种新建方式。

    一:通过maven命令行命令创建一个最初步的scala开发环境

    1.打开cmd

      通过maven命令创建一个最初步的scala开发环境。

      mvn archetype:generate -DarchetypeGroupId=org.scala-tools.archetypes -DarchetypeArtifactId=scala-archetype-simple  -DremoteRepositories=http://scala-tools.org/repo-releases -DgroupId=com.ibeifeng.bigdata.spark.app -DartifactId=logs-analyzer -Dversion=1.0

      分两个部分,前面是scala项目需要的插件,后面是确定一个maven工程。

      

    2.等待创建

      这样就表示创建成功。

      

    3.生成的项目在F盘

      因为在cmd的时候,进入的是F盘。

      

    4.使用open导入

      一种IDEA的使用打开方式。

      

    5.在pom.xml中添加dependency

      HDFS ,Spark core ,Spark SQL ,Spark Streaming

      这个里面重要的部分是有scala的插件。

      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>sacla</groupId>
      8     <artifactId>scalaTest</artifactId>
      9     <version>1.0-SNAPSHOT</version>
     10 
     11     <properties>
     12         <maven.compiler.source>1.5</maven.compiler.source>
     13         <maven.compiler.target>1.5</maven.compiler.target>
     14         <encoding>UTF-8</encoding>
     15         <spark.version>1.6.1</spark.version>
     16         <hadoop.version>2.5.0</hadoop.version>
     17     </properties>
     18 
     19     <dependencies>
     20         <!-- Spark Core -->
     21         <dependency>
     22             <groupId>org.apache.spark</groupId>
     23             <artifactId>spark-core_2.10</artifactId>
     24             <version>${spark.version}</version>
     25             <scope>compile</scope>
     26         </dependency>
     27         <!-- Spark SQL -->
     28         <dependency>
     29             <groupId>org.apache.spark</groupId>
     30             <artifactId>spark-sql_2.10</artifactId>
     31             <version>${spark.version}</version>
     32             <scope>compile</scope>
     33         </dependency>
     34         <!-- Spark Streaming -->
     35         <dependency>
     36             <groupId>org.apache.spark</groupId>
     37             <artifactId>spark-streaming_2.10</artifactId>
     38             <version>${spark.version}</version>
     39             <scope>compile</scope>
     40         </dependency>
     41         <!-- HDFS Client -->
     42         <dependency>
     43             <groupId>org.apache.hadoop</groupId>
     44             <artifactId>hadoop-client</artifactId>
     45             <version>${hadoop.version}</version>
     46             <scope>compile</scope>
     47         </dependency>
     48 
     49         <!-- Test -->
     50         <dependency>
     51             <groupId>junit</groupId>
     52             <artifactId>junit</artifactId>
     53             <version>4.8.1</version>
     54             <scope>test</scope>
     55         </dependency>
     56 
     57     </dependencies>
     58 
     59     <build>
     60         <sourceDirectory>src/main/scala</sourceDirectory>
     61         <plugins>
     62             <plugin>
     63                 <groupId>org.scala-tools</groupId>
     64                 <artifactId>maven-scala-plugin</artifactId>
     65                 <version>2.15.0</version>
     66                 <executions>
     67                     <execution>
     68                         <goals>
     69                             <goal>compile</goal>
     70                             <goal>testCompile</goal>
     71                         </goals>
     72                         <configuration>
     73                             <args>
     74                                 <arg>-make:transitive</arg>
     75                                 <arg>-dependencyfile</arg>
     76                                 <arg>${project.build.directory}/.scala_dependencies</arg>
     77                             </args>
     78                         </configuration>
     79                     </execution>
     80                 </executions>
     81             </plugin>
     82             <plugin>
     83                 <groupId>org.apache.maven.plugins</groupId>
     84                 <artifactId>maven-surefire-plugin</artifactId>
     85                 <version>2.6</version>
     86                 <configuration>
     87                     <useFile>false</useFile>
     88                     <disableXmlReport>true</disableXmlReport>
     89                     <!-- If you have classpath issue like NoDefClassError,... -->
     90                     <!-- useManifestOnlyJar>false</useManifestOnlyJar -->
     91                     <includes>
     92                         <include>**/*Test.*</include>
     93                         <include>**/*Suite.*</include>
     94                     </includes>
     95                 </configuration>
     96             </plugin>
     97         </plugins>
     98     </build>
     99 
    100 </project>

    二:第二种方式

      这种方式,比较实用。

    1.直接新建一个Maven工程

      需要在pom中添加scala的插件。

    2.新建scala文件夹

      原本生成的maven项目只有java与resources。

      在project Stucture中新建scala文件夹,然后将scala文件夹编程sources。

      

    3.完成

      这个截图还是第一种方式下的截图,但是意思没问题。

      

    4.在resources中拷贝配置文件

      需要连接到HDFS的配置文件。

      

    5.新建包

    6.新建类

      因为有了scala插件,就可以直接新建scala 的 object。

      

    7.启动hdfs

      因为需要hdfs上的文件,不建议使用本地的文件进行数据处理。  

    8.书写程序

      这是一个简单的单词统计。

      重点的地方有两个,一个是setMaster,一个是setAppName。如果没有设置,将会直接报错。

     1 package com.scala.it
     2 
     3 import org.apache.spark.{SparkConf, SparkContext}
     4 
     5 object TopN {
     6   def main(args: Array[String]): Unit = {
     7     val conf=new SparkConf()
     8       .setMaster("local[*]")
     9       .setAppName("top3");
    10     val sc=new SparkContext(conf)
    11     val path="/user/beifeng/mapreduce/wordcount/input/wc.input"
    12     val rdd=sc.textFile(path)
    13     val N=3
    14     val topN=rdd
    15       .filter(_.length>0)
    16         .flatMap(_.split(" ").map((_,1)))
    17         .reduceByKey((a,b)=>a+b)
    18         .top(N)(ord = new Ordering[(String,Int)] {
    19           override def compare(x: (String, Int), y: (String, Int)) : Int={
    20             val tmp=x._2.compareTo(y._2)
    21             if (tmp==0)x._1.compareTo(y._1)
    22             else tmp
    23           }
    24         })
    25     topN.foreach(println)
    26 
    27     sc.stop()
    28 
    29   }
    30 }

    9.直接运行的结果

      因为是local模式,所以不需要启动关于spark的服务。

      又因为hdfs的服务已经启动。

      所以,直接运行run即可。

      

    二:注意的问题

    1.path问题

      程序中的path默认是hdfs路径。

      当然,可以使用windows本地文件,例如在D盘下有abc.txt文件,这时候path="file:///D:/abc.txt"

  • 相关阅读:
    Loadrunner中web_find和web_reg_find函数的使用与区别
    性能测试之LoardRunner 检查点
    性能测试之LoardRunner 自动关联
    性能测试之LoardRunner 手动关联二
    性能测试之LoardRunner 手动关联一
    性能测试之LoadRunner11 破解
    JavaScript break跳出多重循环
    如何将jsp页面的table报表转换到excel报表导出
    Word撤销键(Ctrl+z)无效的解决方法
    sql执行顺序
  • 原文地址:https://www.cnblogs.com/juncaoit/p/6375726.html
Copyright © 2020-2023  润新知