当前位置: 首页 > news >正文

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

相关文章:

  • AtCoder - arc086_d Shift and Decrement分析与实现
  • Python 3.13.2安装教程(安装包)Python 3.13.2 快速安装指南
  • Elasticsearch快速上手与深度进阶:一站式实战教程
  • 区块链技术在供应链管理中的应用与创新
  • istio 介绍-01-一个用于连接、管理和保护微服务的开放平台 概览
  • 如何在MCU工程中启用HardFault硬错误中断
  • AI提示词优化方法
  • Redis项目:缓存
  • OpenHarmony 开源鸿蒙北向开发——hdc工具安装
  • 大模型——让Word插上AI的翅膀:如何把DeepSeek装进Word
  • 右键添加:新建HTML模板文件
  • Form表单的三种提交和http请求的三种传参方式,以及Servlet里的取取参方式
  • 浅谈跨平台框架的演变(H5混合开发->RN->Flutter)
  • 温度(Temperature)在大模型输出中的作用与底层原理
  • epoll成员函数介绍
  • 伯努利分布和二项分布学习笔记
  • 线程的概念
  • 跟我学C++中级篇——std::not_fn
  • 消息队列MQ
  • 【初探数据结构】二叉树的顺序结构——堆的实现详解(上下调整算法的时间复杂度分析)
  • 巴基斯坦对印度发起网络攻击,致其约70%电网瘫痪
  • 巴基斯坦军方:印度导弹袭击巴首都附近空军基地
  • 来论|建设性推进缅北和平进程——中国的智慧与担当
  • 深入贯彻中央八项规定精神学习教育中央第七指导组指导督导中国船舶集团见面会召开
  • 新华时评:任凭风云变幻,中俄关系从容前行
  • 印巴局势快速升级,外交部:呼吁印巴以和平稳定的大局为重