大数据分析与内存计算——Spark安装以及Hadoop操作——注意事项

一、Spark安装

1.相关链接

https://dblab.xmu.edu.cn/blog/4322/

2.安装Spark(Local模式)

按照文章中的步骤安装即可

遇到问题:xshell以及xftp不能使用

解决办法:

在linux使用镜像网站进行下载:wget https://mirrors.tuna.tsinghua.edu.cn/apache/spark/spark-3.5.1/spark-3.5.1-bin-without-hadoop.tgz

二、编程实践

1.使用sbt对Scala独立应用程序进行编译打包

同样在Linux中使用wget下载sbt安装文件sbt-1.9.0.tgz:

wget https://github.com/sbt/sbt/releases/download/v1.9.0/sbt-1.9.0.tgz

注意:由于sbt没有国内镜像,下载较慢(大概两个小时)

2.其他按照上面教程中安装即可
3.实验报告要求:

读取HDFS系统文件“/user/hadoop/test.txt”(如果该文件不存在,请先创建)

(1)方法 1:使用 hadoop fs -put 命令上传本地文件

        1).首先,你需要有一个本地文件,假设你有一个名为 local_test.txt 的本地文件,其中包含你想要写入 HDFS 的内容。

        2).使用以下命令将本地文件上传到 HDFS:

        如果你是集群,需要打开所有几点,再启动hadoop,否则报错(处于安全模式

hadoop fs -put /path/to/local_test.txt /user/data/test.txt

        将 /path/to/local_test.txt 替换为你的本地文件的实际路径。

(2)方法 2:直接在 HDFS 上创建文件并写入内容

        1).使用 hadoop fs -cat 命令直接在 HDFS 上创建文件并写入内容:

hadoop fs -cat > /user/data/test.txt

        这将创建一个名为 test.txt 的空文件。

        2).现在你可以写入内容到这个文件中。输入你想要写入的内容,然后按 Ctrl+D 结束输入。

This is the content of the test.txt file.

        3).按 Ctrl+D 结束输入后,test.txt 文件将包含你刚刚输入的内容。

        请注意,这些命令需要在 Hadoop 集群的节点上运行,或者你需要通过 SSH 登录到集群中的一个节点。如果你的 Hadoop 集群配置了 Web 界面(如 Hue 或 Ambari),你也可以通过 Web 界面来上传文件和查看文件内容。

4.通过如下代码将整个应用程序打包成 JAR(首次运行同样需要下载依赖包 ):
/usr/local/sbt/sbt package

注意:这一步要保证你的Linux系统中所有文件夹名称为英文

5.建立一个名为 SimpleApp.scala 的文件

相关代码:

/* SimpleApp.scala */
import org.apache.hadoop.fs.{FileSystem, Path}
import org.apache.hadoop.conf.Configuration

object SimpleApp {
  def main(args: Array[String]): Unit = {
    val conf = new Configuration()
    val fs = FileSystem.get(conf)
    val path = new Path("/user/data/test.txt")
    val isExists = fs.exists(path)

    if (!isExists) {

      val outputStream = fs.create(path)
      outputStream.close()
    }

    val inputStream = fs.open(path)
    val lineCount = scala.io.Source.fromInputStream(inputStream).getLines().size
    println(s"File line count: $lineCount")
    inputStream.close()
  }
}

注意:上述代码中的val path = new Path("/user/data/test.txt"),要替换为你的test.txt的路径

6.在simple.sbt中添加如下内容,声明该独立应用程序的信息以及与 Spark 的依赖关系:
name := "Simple Project"
version := "1.0"
scalaVersion := "2.12.18"
libraryDependencies += "org.apache.hadoop" % "hadoop-client" % "2.10.1

  注意:你的scala和hadoop版本要与代码中的相同

7.通过 spark-submit 运行程序

教程给的指令缺少文件编码格式,需要指定编码格式,以下为修改后的指令

/usr/local/spark-3.5.1/bin/spark-submit --class "SimpleApp" --driver-java-options "-Dfile.encoding=UTF-8" ~/sparkapp/target/scala-2.12/simple-project_2.12-1.0.jar
/usr/local/spark-3.5.1/bin/spark-submit --class "SimpleApp" --driver-java-options "-Dfile.encoding=UTF-8" ~/sparkapp/target/scala-2.12/simple-project_2.12-1.0.jar 2>&1 | grep "Lines with a:"

注意:需要更改你的spark安装路径

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Three.js真实相机模拟

有没有想过如何在 3D Web 应用程序中模拟物理相机? 在这篇博文中,我将向你展示如何使用 Three.js和 OpenCV 来完成此操作。 我们将从模拟针孔相机模型开始,然后添加真实的镜头畸变。 具体来说,我们将仔细研究 OpenCV 的两个失真模…

【Java 集合进阶】单练集合顶层接口collction迭代器

🍬 博主介绍👨‍🎓 博主介绍:大家好,我是 hacker-routing ,很高兴认识大家~ ✨主攻领域:【渗透领域】【应急响应】 【Java】 【VulnHub靶场复现】【面试分析】 🎉点赞➕评论➕收藏 …

适合初学者的Linux的综合项目

大家好,今天给大家介绍适合初学者的Linux的综合项目,文章末尾附有分享大家一个资料包,差不多150多G。里面学习内容、面经、项目都比较新也比较全!可进群免费领取。 对于初学者来说,Linux的综合项目应当既具有教育意义又…

element plus 输入框样式模仿Material-UI

获取焦点状态 自定义指令 app.directive(focus, { // 当被绑定的元素插入到 DOM 中时…… mounted(el) { const descendants el.querySelectorAll(.el-input__inner); var cssClass newLable;el.classList.add(cssClass); // 遍历并操作这些子孙节点 descendants.forE…

(24年4月2日更新)Linux安装chrome及chromedriver(Ubuntu20.0416.04)

一、安装Chrome 1)先执行命令下载chrome: wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb2)安装chrome sudo dpkg -i google-chrome-stable_current_amd64.deb踩坑:这里会提示如下报错&…

安卓主板MT8390(Genio 700)_MTK联发科Linux开发板方案

MediaTek Genio 700 (MT8390)是一款高性能的边缘 AI 物联网平台,专为智能家居、互动零售、工业与商业应用而设计。提供快速响应的边缘计算能力、先进的多媒体功能、广泛的传感器和连接方式,且支持多任务操作系统。 MT8390安卓核心…

ArrayList扩容原理

ArrayList源码分析 分析ArrayList源码主要从三个方面去翻阅:成员变量,构造函数,关键方法 以下源码都来源于jdk1.8 1 成员变量 DEFAULT_CAPACITY 10; 默认初始的容量**(CAPACITY) EMPTY_ELEMENTDATA {}; 用于空实例的共享空数组实例 DEFAU…

Java项目:85 springboot智能物流管理系统

作者主页:舒克日记 简介:Java领域优质创作者、Java项目、学习资料、技术互助 文中获取源码 项目介绍 本美发门店管理系统有管理员和用户两个角色。 用户功能有项目预定管理,产品购买管理,会员充值管理,余额查询管理。…

文本自动粘贴编辑器:支持自动粘贴并筛选手机号码,让信息处理更轻松

在信息时代的浪潮中,文本处理已成为我们日常工作与生活的重要组成部分。无论是商务沟通、社交互动还是个人事务处理,手机号码的筛选与粘贴都显得尤为关键。然而,传统的文本处理方式效率低下、易出错,已无法满足现代人的高效需求。…

Linux(05) Debian 系统修改主机名

查看主机名 方法1:hostname hostname 方法2:cat etc/hostname cat /etc/hostname 如果在创建Linux系统的时候忘记修改主机名,可以采用以下的方式来修改主机名称。 修改主机名 注意,在linux中下划线“_”可能是无效的字符&…

disearch目录扫描工具

项目地址 GitHub - maurosoria/dirsearch: Web path scanner 安装 apt-get install dirsearch 使用 dirsearch -u http://61.147.171.105:56237/

网络协议学习——HTTPS

目录 ​编辑 一,认识HTTPS 二,加密方式 1,对称式加密 2,非对称式的加密 3,数据指纹(数据摘要) 4,数据签名 三,HTTPS的工作原理 实现方式 数字证书 一&#xff0c…

配mmdetection

总流程: 1. 安装conda 参考链接后面补上 列出可用的conda环境 conda env list 删除指定环境 conda remove --name myenv --all 创建并激活指定环境 conda create --name openmmlab python3.8 -y conda activate openmmlab 2. 装pytorch,版本别装错…

zabbix图表时间与服务器时间不一致问题

部署完zabbix后,有时候会发现zabbix服务器的时间明明是对的,但是图标的时间不对,通过以下的配置可以快速解决。 登录zabbix-nginx容器 docker exec -u root -it docker-compose-zabbix-zabbix-web-nginx-mysql-1 bash修改php配置文件 vi /e…

excel散点图怎么每个点添加名称

最终效果图: 添加图标元素->数据标签->其他数据标签选项 选择单元格中的值 手动拖动数据标签,调整到合适的位置。

javaweb学习(day11-监听器Listener过滤器Filter)

一、监听器Listener 1 Listener介绍 Listener 监听器它是 JavaWeb 的三大组件之一。JavaWeb 的三大组件分别是:Servlet 程 序、Listener 监听器、Filter 过滤器 Listener 是 JavaEE 的规范,就是接口 监听器的作用是,监听某种变化(一般就是对…

RISC-V GNU Toolchain 工具链安装问题解决(含 stdio.h 问题解决)

我的安装过程主要参照 riscv-collab/riscv-gnu-toolchain 的官方 Readme 和这位佬的博客:RSIC-V工具链介绍及其安装教程 - 风正豪 (大佬的博客写的非常详细,唯一不足就是 sudo make linux -jxx 是全部小写。) 工具链前前后后我装了…

搜维尔科技:SenseGlove Nova 允许以最简单的方式操作机器人并与物体交互

扩展 Robotics 和 QuarkXR 人机界面 XR 应用 Extend Robotics 利用扩展现实技术,让没有机器人专业知识的个人能够远程控制机器人。他们的 AMAS 解决方案使操作员能够不受地理限制地轻松控制机器人。 需要解决的挑战【搜维尔科技】 目前,操作机器人是一…

day4|gin的中间件和路由分组

中间件其实是一个方法, 在.use就可以调用中间件函数 r : gin.Default()v1 : r.Group("v1")//v1 : r.Group("v1").Use()v1.GET("test", func(c *gin.Context) {fmt.Println("get into the test")c.JSON(200, gin.H{"…

Git指令速查

一、Git初始化 作用:初始化git仓库,想要使用git对某个项目进行管理,需要git init进行初始化 # 在当前目录新建一个Git代码库,初始化仓库。 在当前目录下生成一个隐藏文件夹.git,不能修改.git下的任何东西 $ git ini…