以WordCount为例介绍scala开发流程(spark + scala)

1、整体流程(这里不是wordcount例子,但整体流程相同)

 

以WordCount为例介绍scala开发流程(spark + scala)_第1张图片

2、对整体流程有整体了解后,接下来使用Maven创建scala工程,也可以使用sbt,具体区别请参考博文:https://blog.csdn.net/TXBSW/article/details/84070499,如果之前没有配置Maven请参考博文:https://blog.csdn.net/qq_32588349/article/details/51461182,https://blog.csdn.net/little_skeleton/article/details/80900244

右侧勾选Create from archetype,点击下面的scala-archetype-simple选项,点击Next。如下图

以WordCount为例介绍scala开发流程(spark + scala)_第2张图片

填写GroupId和ArtifactId选项,然后点击Next。如下图

以WordCount为例介绍scala开发流程(spark + scala)_第3张图片

选择本地安装的maven目录和maven配置文件的路径,点击Next,如下图

以WordCount为例介绍scala开发流程(spark + scala)_第4张图片

最后,填写Project name,和刚刚GroupId一样就可以,然后点击Finish,完成工程创建。

3、工程创建成功后,接下来在pom.xml文件中加入spark环境所需要的一些依赖包,如下所示。这里要注意spark的版本一定要和scala的版本相对应,如果缺少什么包,在该文件下自行添加即可。

<properties>
    <maven.compiler.source>1.5maven.compiler.source>
    <maven.compiler.target>1.5maven.compiler.target>
    <encoding>UTF-8encoding>
    <scala.version>2.12.7scala.version>
    <spark.version>2.2.1spark.version>
    <hadoop.version>2.7.3hadoop.version>
properties>


<dependencies>
    <dependency>
        <groupId>org.scala-langgroupId>
        <artifactId>scala-libraryartifactId>
        <version>${scala.version}version>
    dependency>

    <dependency>
        <groupId>org.apache.sparkgroupId>
        <artifactId>spark-core_${scala.version}artifactId>
        <version>${spark.version}version>
    dependency>
    <dependency>
        <groupId>org.apache.sparkgroupId>
        <artifactId>spark-sql_${scala.version}artifactId>
        <version>${spark.version}version>
    dependency>
    <dependency>
        <groupId>org.apache.sparkgroupId>
        <artifactId>spark-hive_${scala.version}artifactId>
        <version>${spark.version}version>
    dependency>

    <dependency>
        <groupId>org.apache.hadoopgroupId>
        <artifactId>hadoop-clientartifactId>
        <version>${hadoop.version}version>
    dependency>

    <dependency>
        <groupId>org.apache.sparkgroupId>
        <artifactId>spark-mllib_${scala.version}artifactId>
        <version>${spark.version}version>
    dependency>

dependencies

4、一切准备就绪,接下来进行程序的开发(以wordcount为例),当然在进行scala开发时,如果右键找不到scala.class,那么请进行如下设置。

以WordCount为例介绍scala开发流程(spark + scala)_第5张图片

以WordCount为例介绍scala开发流程(spark + scala)_第6张图片

package com.ivan

import org.apache.spark.{SparkConf, SparkContext}

object WordCount {
  def main(args: Array[String]): Unit = {
    //创建SparkConf()并且设置App的名称
    val conf = new SparkConf().setAppName("wordcount").setMaster("local")

    //sc是SparkContext,他是spark程序执行的入口
    val sc = new SparkContext(conf)

    /**
      * 带参数的任务,通过args(0)和args(1)进行参数设置
      */
    //sc.textFile(args(0)).flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_).saveAsTextFile(args(1))

    /**
      * 直接进行处理
      */
    val lines = sc.textFile("hdfs://10.77.20.23:8020/user/hadoop/word.txt")
    // lines.flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_).collect().foreach(println)


    /**
      * 第二种处理写法
      */
    val words = lines.flatMap(line => {
      line.split(" ")
    })
    val pairWords = words.map(word => {
      new Tuple2(word, 1)
    })
    /**
      *
      * reduceByKey 先分组,在给每个组的value进行聚合
      */
    val result = pairWords.reduceByKey((v1, v2) => {
      v1 + v2
    })
    result.foreach(tuple => {
      println(tuple)
    })

    //停止sc,结束该任务
    sc.stop()
  }
}

 5、将程序打成jar包(过程如下,Maven方式),并利用winscp上传至服务器

以WordCount为例介绍scala开发流程(spark + scala)_第7张图片

以WordCount为例介绍scala开发流程(spark + scala)_第8张图片

6、向集群提交任务,并执行任务

./spark2-submit 
    --master spark://10.77.20.23:7077
    --executor-memory 512mb 
    --total-executor-cores 4 
    --class com.ivan.WordCount /program/spark-1.0.jar 
    hdfs://10.77.20.23:9000/user/hadoop/ 
    hdfs://10.77.20.23:9000/user/hadoop/output

 

转载于:https://www.cnblogs.com/ltolstar/p/10280529.html

你可能感兴趣的:(scala,java,大数据)