Spark读取文件系统的数据(sbt打包测试)-入门级别Demo

学习目标

通过本关卡练习,您将学到:

  • 如何使用Spark访问本地文件和HDFS文件
  • Spark应用程序的编写、编译和运行方法

相关知识

操作系统:Ubuntu 16.04;

Spark版本:2.4.0;

Hadoop版本:3.1.3。

编程要求

任务一

  • spark-shell中读取Linux系统本地文件/data/workspace/data_set/test.txt,然后统计出文件的行数。Spark默认安装在/usr/local/spark目录下。

    cd /usr/local/spark
    ./bin/spark-shell
    val textFile=sc.textFile("file:data/workspace/data_set/test.txt")
    textFile.count()

可以通过:quit退出spark-shell

任务二

  • 为hadoop用户在HDFS中创建用户目录/user/hadoop

    cd /usr/local/hadoop
    ./bin/hdfs dfs -mkdir -p /user/hadoop

  • 将Linux系统本地的/data/workspace/data_set/testHdfs.txt文件上传到HDFS的目录/user/hadoop

    cd /usr/local/hadoop
    ./bin/hdfs dfs -put /data/workspace/data_set/testHdfs.txt

  • 先用如下命令进入spark-shell

    cd /usr/local/spark && ./bin/spark-shell

再在spark-shell中读取HDFS系统文件/user/hadoop/testHdfs.txt,然后,统计出文件的行数

复制代码
val textFile=sc.textFile("hdfs://localhost:9000/user/hadoop/testHdfs.txt")
textFile.count()

退出spark-shell

复制代码
:quit

任务三

安装scala程序的构建工具sbt,可以到官网下载sbt安装文件sbt-1.3.8.tgz,也可直接使用已经下载好的安装文件/opt/sbt-1.3.8.tgz

  • 使用如下命令,将sbt安装到/usr/local/sbt目录下:

    sudo tar -zxf /opt/sbt-1.3.8.tgz -C /usr/local && sudo chown -R hadoop /usr/local/sbt

  • 配置环境变量,用vim编辑文件~/.bashrc,命令如下:

    vim ~/.bashrc

在末尾追加如下内容:

复制代码
export SBT_HOME=/usr/local/sbt
export PATH=$PATH:$SBT_HOME/bin

保存退出之后,执行如下命令,使设置环境变量生效:

复制代码
source ~/.bashrc

可以使用如下命令查看sbt版本信息:

复制代码
cd ~ && sbt sbtVersion

配置sbt:

用vim创建文件/usr/local/sbt/conf/repositories

复制代码
vim /usr/local/sbt/conf/repositories

内容如下:

复制代码
[repositories]
local
local-preloaded-ivy: file:///${sbt.preloaded-${sbt.global.base> -${user.home}/.sbt}/preloaded/}, [organization]/[module]/[revi sion]/[type]s/[artifact](-[classifier]).[ext]
local-preloaded: file:///${sbt.preloaded-${sbt.global.base-${user.home}/.sbt}/preloaded/}

maven-central: http://nexus3.plugins.svc/repository/maven-public/
sbt-plugin-repo: http://nexus3.plugins.svc/repository/maven-public/, [organization]/[module]/[revision]/[type]s/[artifact](-[classifier]).[ext], bootOnly

修改sbt配置文件/usr/local/sbt/conf/sbtopts,命令如下

复制代码
vim /usr/local/sbt/conf/sbtopts

在末尾增加如下内容:

复制代码
-Dsbt.override.build.repos=true
-Dsbt.repository.config=/usr/local/sbt/conf/repositories

任务四

编写独立应用程序(使用Scala语言),读取HDFS系统文件/user/hadoop/testHdfs.txt,然后,统计出文件的行数;通过sbt工具将整个应用程序编译打包成 JAR包,并将生成的JAR包通过 spark-submit 提交到 Spark 中运行命令。

  1. 使用hadoop用户名登录Linux系统,打开一个终端,在Linux终端中,执行如下命令创建一个文件夹sparkapp作为应用程序根目录:

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

2.下面使用vim编辑器在~/sparkapp/src/main/scala下建立一个名为SimpleApp.scalaScala代码文件,命令如下:

代码文件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 = "hdfs://localhost:9000/user/hadoop/testHdfs.txt"
        val conf = new SparkConf().setAppName("Simple Application")
        val sc = new SparkContext(conf)
        val logData = sc.textFile(logFile, 2)
        val num = logData.count()
        println("The num of this file is %d".format(num))
    }
}

任务五

  • 完成代码编辑后,使用sbtScala 程序进行编译打包。
    SimpleApp.scala程序依赖于Spark API,因此,需要通过sbt进行编译打包以后才能运行。 首先,需要使用vim编辑器在~/sparkapp目录下新建文件simple.sbt,命令如下:

    vim ~/sparkapp/simple.sbt

simple.sbt文件内容如下:

复制代码
name := "Simple Project"
version := "1.0"
scalaVersion := "2.11.12"
libraryDependencies += "org.apache.spark" %% "spark-core" % "2.4.0"
  • 为了保证sbt能够正常运行,先执行如下命令检查整个应用程序的文件结构:

    cd ~/sparkapp
    find .

文件结构应该是类似如下所示的内容:

复制代码
.
./src
./src/main
./src/main/scala
./src/main/scala/SimpleApp.scala
./simple.sbt

接下来,通过如下代码将整个应用程序打包成 JAR:

复制代码
cd ~/sparkapp  #一定把这个目录设置为当前目录
sbt package

生成的JAR包的位置为~/sparkapp/target/scala-2.11/simple-project_2.11-1.0.jar

对于前面sbt打包得到的应用程序JAR包,可以通过spark-submit提交到Spark中运行,命令如下:

复制代码
/usr/local/spark/bin/spark-submit --class "SimpleApp" ~/sparkapp/target/scala-2.11/simple-project_2.11-1.0.jar
相关推荐
TracyCoder12311 小时前
ElasticSearch内存管理与操作系统(一):内存分配底层原理
大数据·elasticsearch·搜索引擎
cd_9492172112 小时前
九昆仑低碳科技:所罗门群岛全国森林碳汇项目开发合作白皮书
大数据·人工智能·科技
Acrelhuang12 小时前
工商业用电成本高?安科瑞液冷储能一体机一站式解供能难题-安科瑞黄安南
大数据·开发语言·人工智能·物联网·安全
小王毕业啦12 小时前
2010-2024年 非常规高技能劳动力(+文献)
大数据·人工智能·数据挖掘·数据分析·数据统计·社科数据·经管数据
言無咎12 小时前
从规则引擎到任务规划:AI Agent 重构跨境财税复杂账务处理体系
大数据·人工智能·python·重构
张小凡vip12 小时前
数据挖掘(十)---python操作Spark常用命令
python·数据挖掘·spark
uesowys13 小时前
Apache Spark算法开发指导-Decision tree classifier
算法·决策树·spark
私域合规研究13 小时前
【AI应用】AI与大数据融合:中国品牌出海获客的下一代核心引擎
大数据·海外获客
TDengine (老段)13 小时前
金融风控系统中的实时数据库技术实践
大数据·数据库·物联网·时序数据库·tdengine·涛思数据
不光头强13 小时前
kafka学习要点
分布式·学习·kafka