基于IntelliJ Idea的Scala开发demo一Spark开发demo

顺着之前SBT的HelloWorld案例(具体请参考我的另外一篇博文《基于IntelliJ Idea的Scala开发demo—SBT包管理demo》)

今天给出一个基于Scala的spark开发demo,大致的步骤如下:

  1. 导入Spark依赖包
  2. 代码编写
  3. 代码打包以及运行

导入Spark依赖包

打开项目中的build.sbt文件,添加如下Spark依赖内容:

name := "LzScalaSparkTest"
version := "0.1"
scalaVersion := "2.11.12"

// public version configuration
val sparkVersion = "2.3.4"

// https://mvnrepository.com/artifact/org.apache.spark
// spark dependencies
libraryDependencies ++= Seq(
  "org.apache.spark" %% "spark-core" % sparkVersion ,
  "org.apache.spark" %% "spark-sql" % sparkVersion
)

如果没有用到spark-sql的话,可以不用添加spark-sql的依赖,如之前博文说,刷新包导入依赖之后如下图所示:

代码编写

以WordCount为例,新建Scala的object文件,相关代码如下:

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

object LzWordCount {

  // 全局log对象
  val LOGGER = Logger.getLogger(this.getClass)

  /* 这是一个文本文件中单词统计程序
    * 以下程序将输出每个文本中每个单词出现的次数
    */
  def main(args: Array[String]) {

    val conf = new SparkConf()
      .setAppName("WordCountProgram")
      .setMaster("local[1]")

    new SparkContext(conf).textFile("hdfs:///hbase/hbase.version")
      .flatMap(line => line.split(" "))
      .map(word => (word, 1))
      .reduceByKey(_ + _)
      .collect()
      .foreach(println)

    LOGGER.info("\n------------------运行结束-----------------\n")

  }

}

代码打包以及运行

因为我们通常本地都是开发环境,spark应用程序通常都是在Hadoop/spark集群上面运行,一个比较简单的方式是,本地打包好之后上传到集群上运行,接下来就是介绍这套方案如何实现。

上面代码编写完成之后,可以直接在IntelliJ Idea上面打开“Terminal”,然后运行如下命令:

sbt package

运行成功之后,可以看到如下打包结果:

打包成功之后,可以通过远程文件上传工具将jar包上传到集群服务器(装有spark客户端的那一台即可)上,IntelliJ Idea可以配置项目自动部署上传到远程服务器,具体如何实现请参考我的另外一篇博文:《基于IntelliJ Idea的Scala开发环境搭建一远程上传以及远程集群调试》。

上传jar到集群之后,可以通过如下命令运行:

spark-submit --class LzWordCount lzscalasparktest_2.11-0.1.jar

我这边的运行结果如下图所示:

你可能感兴趣的:(Spark/Hadoop)