学习进度十三(Scala独立应用编程)

环境如下:

Hadoop 2.6.0以上

java JDK 1.7以上

Spark 3.0.0-preview2

一、Scala独立应用编程

1、安装sbt

sbt是一款Spark用来对scala编写程序进行打包的工具,这里简单介绍sbt的安装过程,感兴趣的读者可以参考官网资料了解更多关于sbt的内容。
Spark 中没有自带 sbt,这里直接给出sbt-launch.jar的下载地址,直接点击下载即可。
我们选择安装在 /usr/local/sbt 中:

sudo mkdir /usr/local/sbt


sudo chown -R hadoop /usr/local/sbt    # 此处的 hadoop 为你的用户名


cd /usr/local/sbt

下载后,执行如下命令拷贝至 /usr/local/sbt 中(本人没有使用本步操作  因为本人不是在虚拟机中下载的sbt-launch.jar包,所以在Windows机中下载好后直接拖拽到了Linux机中的 /usr/local/sbt 文件夹中):

cp ~/下载/sbt-launch.jar .

接着在 /usr/local/sbt 中创建 sbt 脚本(vim ./sbt),添加如下内容(进入vim后输入 “ i ”进入编辑插入模式 ):

#!/bin/bash

SBT_OPTS="-Xms512M -Xmx1536M -Xss1M -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=256M"

java $SBT_OPTS -jar `dirname $0`/sbt-launch.jar "[email protected]"

保存后(复制本内容(Ctrl+V)粘贴到虚拟机中(Ctrl+Shift+V),退出编辑模式(Esc),保存并退出(:wq   注意:w前的冒号也要输入)),为 ./sbt 脚本增加可执行权限:

chmod u+x ./sbt

最后运行如下命令,检验 sbt 是否可用(请确保电脑处于联网状态(网速会十分影响下载速度),首次运行会处于 “Getting org.scala-sbt sbt 0.13.11 …” 的下载状态,请耐心等待。笔者等待了5分钟才出现第一条下载提示,全部下载下来笔者大约用了4-5个小时(受网速影响)):

./sbt sbt-version

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

2、Scala应用程序代码

在终端中执行如下命令创建一个文件夹 sparkapp 作为应用程序根目录:

cd ~      # 进入用户主文件夹

mkdir ./sparkapp           # 创建应用程序根目录

mkdir -p ./sparkapp/src/main/scala        # 创建所需的文件夹结构

在 ./sparkapp/src/main/scala 下建立一个名为 SimpleApp.scala 的文件(vim ./sparkapp/src/main/scala/SimpleApp.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:///usr/local/spark/README.md" // Should be some file on your system
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))
}
}

该程序计算 /usr/local/spark/README 文件中包含 “a” 的行数 和包含 “b” 的行数。代码第8行的 /usr/local/spark 为 Spark 的安装目录,如果不是该目录请自行修改。不同于 Spark shell,独立应用程序需要通过 val sc = new SparkContext(conf) 初始化 SparkContext,SparkContext 的参数 SparkConf 包含了应用程序的信息。

该程序依赖 Spark API,因此我们需要通过 sbt 进行编译打包。 ./sparkapp 中新建文件 simple.sbt(vim ./sparkapp/simple.sbt),添加内容如下,声明该独立应用程序的信息以及与 Spark 的依赖关系:

name := "Simple Project"
version := "1.0"
scalaVersion := "2.12.10"
libraryDependencies += "org.apache.spark" %% "spark-core" % "3.0.0-preview2"

文件 simple.sbt 需要指明 Spark 和 Scala 的版本。在上面的配置信息中,scalaVersion用来指定scala的版本,sparkcore用来指定spark的版本,这两个版本信息都可以在之前的启动 Spark shell 的过程中,从屏幕的显示信息中找到(如果忘记了可以重新启动一下spark :

(进入spark的安装目录)

(启动spark)

再回看一下,(退出spark输入  “ :quit  ”,注意q前面的冒号要一同输入))。下面就是笔者在启动过程当中,看到的相关版本信息。

3.使用 sbt 打包 Scala 程序

为保证 sbt 能正常运行,先执行如下命令检查整个应用程序的文件结构:

cd ~/sparkapp

find .

文件结构应如下图所示:

接着,我们就可以通过如下代码将整个应用程序打包成 JAR(首次运行同样需要下载依赖包 ,笔者用了大约2-3个小时(由下载依赖包时的网速决定)):

/usr/local/sbt/sbt package

打包成功的话,会输出如下图内容:

生成的 jar 包的位置为 ~/sparkapp/target/scala-2.12/simple-project_2.12-1.0.jar。(其中两个版本可能有所不同,读者只需要到对应的文件夹下对应查找即可)(~为主文件夹:点击虚拟机的 进入就是主文件夹)

4、通过 spark-submit 运行程序

最后,我们就可以将生成的 jar 包通过 spark-submit 提交到 Spark 中运行了,命令如下:(红线部分就是上边说的生成的jar包的位置)

/usr/local/spark/bin/spark-submit --class "SimpleApp" ~/sparkapp/target/scala-2.12/simple-project_2.12-1.0.jar(笔者未使用此命令,不建议使用)

# 上面命令执行后会输出太多信息,可以不使用上面命令,而使用下面命令查看想要的结果

/usr/local/spark/bin/spark-submit --class "SimpleApp" ~/sparkapp/target/scala-2.12/simple-project_2.12-1.0.jar 2>&1 | grep "Lines with a:"(此命令为笔者所使用的命令,方便查看,推荐使用)

最终得到的结果如下:

自此,你就完成了你的第一个 Spark 应用程序了。

本博客参考了林子雨的大数据原理与应用 第十六章 Spark 学习指南 http://dblab.xmu.edu.cn/blog/804-2/

原文地址:https://www.cnblogs.com/hwh000/p/12305492.html

时间: 2024-08-03 02:13:33

学习进度十三(Scala独立应用编程)的相关文章

假期学习进度十三

安装sbt sbt是一款Spark用来对scala编写程序进行打包的工具,下载地址https://repo.typesafe.com/typesafe/ivy-releases/org.scala-sbt/sbt-launch/0.13.11/sbt-launch.jar 下载后,执行如下命令拷贝至 /usr/local/sbt 中: 接着在 /usr/local/sbt 中创建 sbt 脚本(vim ./sbt),添加如下内容: 为 ./sbt 脚本增加可执行权限: 最后运行如下命令,检验 s

15、自学——Linux的学习进度与任务【bash编程之条件判断】

bash编程之条件判断 bash编程之条件判断:判定后续操作的前提条件是否满足 1.条件判断的常用判断类型(bash内生的): 整数测试 字符测试 文件测试   2.echo $?(执行状态返回值): 0:正确 1-255:错误 布尔值: 真 假 3.逻辑运算: 与运算: 真 && 真 = 真(0) 真 && 假 = 假(非0) 假 && 真 = 假 假 && 假 = 假 或运算: 真 || 真 = 真(0) 真 || 假 = 真 假 ||

学习进度-04 Scala的学习

在Scala中,主函数的定义是def main(args: Array[String]),Scala中必须使用对象方法 1.变量: Scala中的变量分为两种var和val. 例如:def main(args: Array[String]):Unit = { val x = 1 x = 2 } 这样编写是错误的 ,因为val 等同于被 final 修饰过的变量, 即一旦初始化便不可被重新赋值: 而 def main(args: Array[String]): Unit = { var x = 1

学习进度十四(Spark之Java独立应用编程)

环境如下: Hadoop 2.6.0以上 java JDK 1.7以上 Spark 3.0.0-preview2 一.Scala独立应用编程 二.java独立应用编程 1.安装maven ubuntu中没有自带安装maven,需要手动安装maven.可以访问maven官方下载自己下载.这里直接给出apache-maven-3.6.3-bin.zip的下载地址,直接点击下载即可.选择安装在/usr/local/maven中: sudo unzip ~/下载/apache-maven-3.6.3-b

Scala界面事件处理编程实战详解.

今天学习了一个Scala界面事件处理编程,让我们从代码出发. import scala.swing._import scala.swing.event._ object GUI_Panel extends SimpleSwingApplication{  def top = new MainFrame{//重写框架    title = "second GUI"//界面名称    val button = new Button{//定义按钮      text = "scal

第十三周学习进度

  第十三周学习进度 代码量 200 博客量 5 时间 15 学到的知识点 软件工程质量的定义与评估,<人月神话>里开发过程中的焦油坑问题 总结:这星期开始进行下一冲刺阶段,自己通过阅读<人月神话>这本书也受到很大的启发,里面提到了我们在开发中会遇到的一些问题,感觉很有帮助.

《Windows核心编程》第5版 学习进度备忘

学习资源:<Windows核心编程>第5版 知识基础支持: 跳过的内容: 1. 知识要点: 1: 注意事项: 1. 不理解知识点: 1. 进度: 1.2014-08-10,前两章结束,接下来“第3章内核对象” <Windows核心编程>第5版 学习进度备忘,布布扣,bubuko.com

面向对象程序设计学习进度条

面向对象程序设计学习进度条 周次 (阅读/编写)代码行数 发布博客量/博客评论数量 课堂/课余学习时间(小时) 最满意的编程任务 第一周 100/40 1/0 6/4 九九乘法表 第二周 150/80 1/0 6/4 实验3.实验7 第三周         第四周         第五周         第六周         第七周         第八周         第九周         第十周         第十一周         第十二周         第十三周      

学习进度条201771010119穷吉

<2018面向对象程序设计(java)课程学习进度条> 周次 编写代码行数 发表博客量.博客评论量 课堂/课余学习时间(小时) 最满意编程任务 第一周 20~30 1/0 4/2 九九乘法表 第二周 40~60 1/0 6/4 实验一.实验二 第三周 70~80 4/3 第四周 第五周 第六周 第七周 第八周 第九周 第十周 第十一周 第十二周 第十三周 第十四周 第十五周 第十六周 第十七周 累计 原文地址:https://www.cnblogs.com/qiongji/p/9655666.