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.SparkConfobject 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/39723.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【零基础学python】python基础语法(一)

前言:Python 是当今最受欢迎的编程语言之一,其广泛应用于 人工智能、数据科学、Web 开发、自动化 等多个领域。它以 简洁的语法、强大的标准库 和 跨平台兼容性 深受开发者喜爱。作为 机器学习和大数据的首选语言,Python 在学术研究、金融分析…

数据类设计_图片类设计之8_自由图形类设计_(前端架构)

前言 学的东西多了,要想办法用出来.C和C是偏向底层的语言,直接与数据打交道.尝试做一些和数据方面相关的内容 引入 前面的内容都是矩阵图形类,现在讨论自由图形类设计 矩阵图形类和自由图形类的差别 左图为矩阵图形类对象,右图为自由图形类对象.矩阵图形类对象单独占据一个矩…

【学习记录】大模型微调之使用 LLaMA-Factory 微调 Qwen系列大模型,可以用自己的数据训练

一、LoRA微调的基本原理 1、基本概念 LoRA(Low-Rank Adaptation)是一种用于大模型微调的技术,通过引入低秩矩阵来减少微调时的参数量。在预训练的模型中,LoRA通过添加两个小矩阵B和A来近似原始的大矩阵ΔW,从而减少需…

绿盟CSSP靶场-将已有虚拟机创建为新镜像作为新虚拟机模板

将部署了自定义软件的虚拟机,【保持镜像】将这个在运的虚拟机存为一个新的镜像。 为了保证上传的镜像是完整的,勾选【全量镜像】。 等待镜像上传完成,可以看到刚刚上传的镜像,状态也为已上传。 将镜像从私有改为共享,…

VMWare Ubuntu 详细安装教程

VMWare Ubuntu 详细安装教程 一、下载安装VMware二、下载 Ubuntu 镜像文件三、安装 Ubuntu四、开启虚拟机 一、下载安装VMware 官网下载地址https://www.vmware.com/products/desktop-hypervisor/workstation-and-fusion知乎大佬的博客原文,含下载地址https://zhua…

嵌入式c学习八

练习 一、指针数组与数组指针 #include <stdio.h>int main() {//c是一个指针数组&#xff0c;里面有4个元素每个元素都是指针 char *c[] {"hello", "world", "homed", "gotogo"}; //cp是指针数组&#xff0c;有4个元素&#…

LLaMA-Factory微调大模型

LLaMA-Factory安装 github 下载 LLaMA-Factory项目 创建虚拟环境 conda create -n llama_factory python3.10 激活 activate llama_factorytorch 安装 conda install pytorch2.3.1 torchvision0.18.1 torchaudio2.3.1 pytorch-cuda12.1 -c pytorch -c nvidia依赖安装 …

第一讲 | 解锁C++编程能力:基础语法解析

C入门基础 一、C的第一个程序二、命名空间三、C输入&输出四、缺省参数/默认参数五、函数重载六、引用1.引用的特性2.引用的使用引用做返回值场景 3.const引用只有指针和引用涉及权限放大、缩小的问题&#xff0c;普通变量没有 4.指针和引用的关系 七、inline八、nullptr 一…

【颠覆性缓存架构】Caffeine双引擎缓存实战:CPU和内存双优化,命中率提升到92%,内存减少75%

千万级QPS验证&#xff01;Caffeine智能双缓存实现 92%命中率&#xff0c;内存减少75% 摘要&#xff1a; 本文揭秘千万级流量场景下的缓存革命性方案&#xff01;基于Caffeine打造智能双模式缓存系统&#xff0c;通过冷热数据分离存储与精准资源分配策略&#xff0c;实现CPU利…

JVM 03

今天是2025/03/24 15:21 day 11 总路线请移步主页Java大纲相关文章 今天进行JVM 5,6 个模块的归纳 首先是JVM的相关内容概括的思维导图 5. 优化技术 JVM通过多种优化技术提升程序执行效率&#xff0c;核心围绕热点代码检测和编译优化实现动态性能提升。 热点代码检测 JVM…

wordpress-网站百宝箱插件

含置顶,网页宠物, 哀悼, 禁止复制, 禁止查看源码, 弹幕, WP优化,媒体分类,预加载,定时发布,在线客服, 留言板, 手机客服, 网站背景, 公告, 跑马灯, 水印, 分享, 打赏, 海报图, 广告,数据库管理,图片加载特效。等综合功能插件

Git 钩子:特定操作脚本

Git 钩子 在特定 Git 操作发生时自动触发的脚本&#xff1b; 可以从提交规范、代码质量、自动化流程、分支管理、安全性检查等多个方面进行配置&#xff0c;帮助团队提高开发效率和代码质量&#xff1b; 本地 记录提交检验 commit-msg 修改&#xff1a;\test\.git\hooks\c…

职坐标:互联网行业职业发展路径解析

内容概要 当前&#xff0c;互联网行业正以指数级速度重塑全球产业格局。数据显示&#xff0c;我国互联网市场规模在2019年上半年实现17.9%的同比增速&#xff0c;而随着工业互联网、5G等前沿技术的加速落地&#xff0c;这一增长趋势仍在强化。工信部近期发布的《新型信息基础设…

红数码影视(RED Digital Cinema)存储卡格式化后的恢复方法

红数码影视(RED Digital Cinema)的摄像机可以生成两种RAW级高清视频文件&#xff0c;一种是R3D&#xff0c;一种是MOV。其中MOV属于苹果(apple)公司的QT视频封装结构&#xff0c;使用的视频编码是Apple ProRes;而R3D则是RED公司自创的RAW视频文件&#xff0c;这种文件解码需要使…

Gitee上库常用git命令

Gitee上库常用git命令 1、Fork 项目2、个人仓库修改3、追加提交4、创建PR5、多笔commit合一 1、Fork 项目 2、个人仓库修改 git add . // -s 表示自动添加邮箱签名信息&#xff0c;-m表示其后跟随commit描述 git commit -sm “add transition freeze” git push origin [目标…

阿里开源的免费数据集成工具——DataX

企业里真实的数据流转是什么样子的呢&#xff1f; 左侧描述了一个企业真实的样子&#xff0c;我们总是需要把数据从一个地方搬到另一个地方&#xff0c;最后就是搬来搬去搬成了一张张解不开的网。 右侧则表达了使用DataX为中心实现数据的同步。 什么是DataX DataX是一个异构…

SpringBoot学习笔记(主)

文章目录 SpringBoot概述自动装配&#xff08;部分&#xff09;概述原理简述相关解释源码位置EnableAutoConfigurationAutoConfigurationImportSelector 配置文件yaml语法单双引号列表多行字符串 配置文件的位置和加载顺序配置文件取值运行jar包 Springboot整合springmvc自动管…

python多线程和多进程的区别有哪些

python多线程和多进程的区别有七种&#xff1a; 1、多线程可以共享全局变量&#xff0c;多进程不能。 2、多线程中&#xff0c;所有子线程的进程号相同&#xff1b;多进程中&#xff0c;不同的子进程进程号不同。 3、线程共享内存空间&#xff1b;进程的内存是独立的。 4、同一…

docker 安装部署 canal

1 mysql 安装 1.1 拉取镜像 docker pull mysql:8.4.41.2 创建挂载目录 mkdir -p /user/lzl/tool/docker/mysql/mysql_8.4.4/home/confmkdir -p /user/lzl/tool/docker/mysql/mysql_8.4.4/home/datamkdir -p /user/lzl/tool/docker/mysql/mysql_8.4.4/home/log1.3 编辑配置文…

基于SpringBoot的图书借阅小程序+LW参考示例

系列文章目录 1.基于SSM的洗衣房管理系统原生微信小程序LW参考示例 2.基于SpringBoot的宠物摄影网站管理系统LW参考示例 3.基于SpringBootVue的企业人事管理系统LW参考示例 4.基于SSM的高校实验室管理系统LW参考示例 5.基于SpringBoot的二手数码回收系统原生微信小程序LW参考示…