编写完整spark程序(scala)

1.安装sbt
sbt是一款Spark用来对scala编写程序进行打包的工具,这里简单介绍sbt的安装过程。Spark 中没有自带 sbt,自行下载后安装在/usr/local/sbt中:

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

下载后,执行如下命令拷贝至 /usr/local/sbt 中:

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

接着在 /usr/local/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 "$@"

保存后,为 ./sbt 脚本增加可执行权限:

chmod u+x ./sbt

最后运行如下命令,检验 sbt 是否可用(请确保电脑处于联网状态,首次运行会处于 “Getting org.scala-sbt sbt 0.13.11 ...” 的下载状态,请耐心等待。笔者等待了 7 分钟才出现第一条下载提示):

./sbt sbt-version

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

cd ~ # 进入用户主文件夹
mkdir ./sparkapp # 创建应用程序根目录
mkdir -p ./sparkapp/src/main/scala # 创建所需的文件夹结构

在 ./sparkapp/src/main/scala 下建立一个名为 SimpleApp.scala 的文件(gedit ./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 userFile = "/user/mv/u.user" 
val conf = new SparkConf().setMaster("spark://master:7077").setAppName("Simple Application")
val sc = new SparkContext(conf)
val userData = sc.textFile(userFile).cache()
val numMs = userData.filter(line => line.contains("M")).count()
val numFs = userData.filter(line => line.contains("F")).count()
println("Lines with M: %s, Lines with F: %s".format(numMs, numFs))
}
}

计算用户文件中,男性和女性的个数。

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

name := "Simple Project"

version := "1.0"

scalaVersion := "2.11.8"

libraryDependencies += "org.apache.spark" %% "spark-core" % "2.0.2"

3.sbt打包程序
为保证 sbt 能正常运行,先执行如下命令检查整个应用程序的文件结构:
cd ~/sparkapp
find .
文件结构应如下图所示:

编写完整spark程序(scala)_第1张图片
Paste_Image.png

在该目录下执行,打包
生成的 jar 包的位置为 ~/sparkapp/target/scala-2.11/simple-project_2.11-1.0.jar。

4.通过 spark-submit 运行程序
spark-submit --class "SimpleApp" ~/sparkapp/target/scala-2.11/simple-project_2.11-1.0.jar 2>&1 | grep "Lines with M:"
最终结果为:

编写完整spark程序(scala)_第2张图片
Paste_Image.png

你可能感兴趣的:(编写完整spark程序(scala))