• 大三寒假学习 spark学习 编写spark独立应用程序


    使用Scala编写的程序需要使用sbt进行编译打包,相应的,Java程序使用 Maven编译打包,而 Python程序通过spark-submit直接提交

    sbt编译打包:

    1.安装sbt

      下载sbt-launch.jar,拷贝到虚拟机中

       

    2.穿件sbt脚本

      创建 sbt 脚本(vim ./sbt),添加如下内容:

      #!/bin/bash
      SBT_OPTS="-Xms512M -Xmx1536M -Xss1M -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=256M"
      java $SBT_OPTS -jar `dirname $0`/sbt-launch.jar "$@" 

      

    3.运行命令

      最后运行如下命令,检验 sbt 是否可用(需要几分钟时间):

      ./sbt sbt-version

      如果出现权限被拒绝,修改权限即可:

      

      修改权限:chmod u+x ./sbt,再次运行之前的命令,会下载一些东西,要等几分钟

      只要能得到如下图的版本信息就没问题:

      

    编写spark独立应用程序:

      在对应目录下(我的目录为/opt/module/sbt/mycode/src/main/scala)新建SimpleApp.scala文件添加如下代码:

    import org.apache.spark.SparkContext
    import org.apache.spark.SparkContext._
    import org.apache.spark.SparkConf
    object SimpleApp{
            def main(args: Array[String]){
                    val logFile = "file:///opt/module/data/english.txt"//注意要有file://
                    val conf = new SparkConf().setAppName("Simple Application")
                    val sc = new SparkContext(conf)
                    val logData = sc.textFile(logFile,2).cache()
                    val numAs = logData.filter(line => line.contains("a")).count()
                    val numBs = logData.filter(line => line.contains("b")).count()
                    println("Lines with a:%s,Lines with b:%s".format(numAs,numBs))
            }
    }

    请在./mycode 中新建文件 simple.sbt(vim ./mycode/simple.sbt),添加内容如下,声明该独立应用程序的信息以及与 Spark 的依赖关系:

    注意版本号对应

    name := "Simple Project"
    version := "1.0"
    scalaVersion := "2.11.8"
    libraryDependencies += "org.apache.spark" %% "spark-core" % "2.1.0"

    检查文件结构如下如所示即为正确:

    接着,我们就可以通过如下代码将整个应用程序打包成 JAR(首次运行同样需要下载依赖包 ):

     完成后:

    生成的jar包位置:/opt/module/sbt/mycode/target/scala-2.12

    可以通过spark-submit提交应用程序,该命令的格式如下:./bin/spark-submit

    --class <main-class>  //需要运行的程序的主类,应用程序的入口点
      --master <master-url>  //Master URL,下面会有具体解释
      --deploy-mode <deploy-mode>   //部署模式
      ... # other options  //其他参数
      <application-jar>  //应用程序JAR包
    
      [application-arguments] //传递给主类的主方法的参数

    对于之前使用sbt工具编译打包得到的 jar 包,就可以通过 spark-submit 提交到 Spark 中运行了,命令如下:

     

    $ /opt/module/spark-3.1.2/bin/spark-submit --class "SimpleApp" /opt/module/sbt/mycode/target/scala-2.12/simple-project_2.12-1.0.jar

    结果:Lines with a:8,Lines with b:7

  • 相关阅读:
    clear ,refresh,free
    记录一次vxworks下使用NFS组件的过程
    [dart学习]第七篇:类(构造函数)
    [dart学习]第六篇:流程控制语句
    [沉痛哀悼宁滨院士]
    [dart学习]第五篇:操作符
    [dart学习]第四篇:函数
    [dart学习]第三篇:dart变量介绍 (二)
    [dart学习]第二篇:dart变量介绍 (一)
    [dart学习]第一篇:windows下安装配置dart编译环境,写出helloworld
  • 原文地址:https://www.cnblogs.com/fengchuiguobanxia/p/15837101.html
Copyright © 2020-2023  润新知