Spark大数据处理学习笔记(3.1)掌握RDD的创建

news2025/1/22 12:47:18

该文章主要为完成实训任务,详细实现过程及结果见【http://t.csdn.cn/oT0of】

文章目录

  • 一、准备工作
    • 1.1 准备文件
      • 1.1.1 准备本地系统文件
      • 1.1.2 启动HDFS服务
      • 1.1.3 上传文件到HDFS
    • 1.2 启动Spark Shell
      • 1.2.1 启动Spark服务
      • 1.2.2 启动Spark Shell
  • 二、创建RDD
    • 2.1 通过并行集合创建RDD
      • 2.1.1 利用`parallelize()`方法创建RDD
      • 2.1.2 利用`makeRDD()`方法创建RDD
    • 2.2 从外部存储创建RDD
      • 2.2.1 从文件系统加载数据创建RDD
        • 课堂练习:给输出数据添加行号
      • 2.2.2 从HDFS中加载数据创建RDD
  • 三、读取文件的问题
    • 3.1 以集群方式启动Spark Shell
      • 3.1.1 读取本地文件
      • 3.1.2 读取HDFS文件
    • 3.2 以本地模式启动Spark Shell
      • 3.2.1 读取本地文件
      • 3.2.2 访问HDFS文件


一、准备工作

1.1 准备文件

1.1.1 准备本地系统文件

  • /home目录里创建test.txt
    在这里插入图片描述

  • 单词用空格分隔
    在这里插入图片描述

1.1.2 启动HDFS服务

  • 执行命令:start-dfs.sh
    在这里插入图片描述

1.1.3 上传文件到HDFS

  • test.txt上传到HDFS的/park目录里
    在这里插入图片描述

  • 查看文件内容
    在这里插入图片描述

1.2 启动Spark Shell

1.2.1 启动Spark服务

  • 执行命令:start-all.sh
    在这里插入图片描述

1.2.2 启动Spark Shell

  • 执行命令:spark-shell(既可以读取本地文件,也可以读取HDFS文件)
    在这里插入图片描述
  • 查看Spark Shell的WebUI界面
    在这里插入图片描述
  • 查看执行器
    在这里插入图片描述

二、创建RDD

2.1 通过并行集合创建RDD

  • Spark可以通过并行集合创建RDD。即从一个已经存在的集合、数组上,通过SparkContext对象调用parallelize()makeRDD()方法创建RDD。

2.1.1 利用parallelize()方法创建RDD

  • 执行命令:val rdd = sc.parallelize(List(1, 2, 3, 4, 5, 6, 7, 8))
    在这里插入图片描述
  • 执行命令:val rdd = sc.parallelize(Array(100, 300, 200, 600, 500, 900))
    在这里插入图片描述
  • 说明:不能基于Map、Tuple和Set来创建RDD

2.1.2 利用makeRDD()方法创建RDD

  • 执行命令:val rdd = sc.makeRDD(List(1, 2, 3, 4, 5, 6, 7, 8))
    在这里插入图片描述
  • 执行命令:rdd.collect(),收集rdd数据进行显示
    在这里插入图片描述
  • 思考题:取出rdd中的偶数
    在这里插入图片描述

2.2 从外部存储创建RDD

2.2.1 从文件系统加载数据创建RDD

  • 执行命令:val rdd = sc.textFile("file:///home/test.txt")
    在这里插入图片描述
  • 注意:访问本地文件,必须加file://前缀,否则系统会认为是访问hdfs://master:9000/home/test.txt,从而会报错。
  • 执行命令:val lines = rdd.collec,查看RDD中的内容,保存到常量lines
    在这里插入图片描述
  • 执行命令:lines.foreach(println)(利用foreach遍历算子)
    在这里插入图片描述

课堂练习:给输出数据添加行号

  • 利用for循环来实现
    在这里插入图片描述
  • 利用foreach遍历算子来实现
    在这里插入图片描述

2.2.2 从HDFS中加载数据创建RDD

  • 执行命令:val rdd = sc.textFile("hdfs://master:9000/park/test.txt")
    在这里插入图片描述
  • 执行命令:val lines = rdd.collect,查看RDD中的内容
    在这里插入图片描述
  • 获取包含spark的行,执行命令:val sparkLines = rdd.filter(_.contains("spark"))
    在这里插入图片描述
  • 利用遍历算子显示sparkLines内容
    在这里插入图片描述

三、读取文件的问题

3.1 以集群方式启动Spark Shell

  • 执行命令:spark-shell --master spark://master:7077
    在这里插入图片描述

3.1.1 读取本地文件

  • 执行命令:val rdd = sc.textFile("file:///home/test.txt")
    在这里插入图片描述
  • 执行命令: rdd.collect,报错 - Input path does not exist: hdfs://master:9000/home/test.txt
  • 结论:集群模式启动的Spark Shell不能读取本地文件

3.1.2 读取HDFS文件

  • 执行命令:val rdd = sc.textFile("hdfs://master:9000/park/test.txt")
    在这里插入图片描述
  • 执行命令:val rdd = sc.textFile("/park/test.txt")
    在这里插入图片描述
  • 结论:默认就是访问HDFS上的文件,因此hdfs://master:9000前缀可以不写

3.2 以本地模式启动Spark Shell

  • 执行命令:spark-shell --master local[*]
    在这里插入图片描述

3.2.1 读取本地文件

  • 执行命令:val rdd = sc.textFile("file:///home/test.txt")
    在这里插入图片描述
  • 执行命令:val rdd = sc.textFile("/home/test.txt")
    在这里插入图片描述
  • 结论:本地模式启动的Spark Shell,默认读取的依然是HDFS文件,要访问本地文件,必须加file://前缀

3.2.2 访问HDFS文件

  • 执行命令:val rdd = sc.textFile("hdfs://master:9000/park/test.txt")
    在这里插入图片描述
  • 执行命令:val rdd = sc.textFile("/park/test.txt")
    在这里插入图片描述
  • 结论:默认就是访问HDFS文件,因此加不加hdfs://master:9000前缀都是一样的效果文件。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java语言背景介绍 及 语言跨平台原理

01_Java语言背景介绍 Java语言的三个版本: ●Java SE ● Java ME ●Java EE Java SE: Java语言的(标准版),用于桌面应用的开发,是其他两个版本的基础。 桌面应用:GUI程序,是采…

科普丨关于 A/B 测试的十问十答

你想知道的,都在这里!本文是神策数据「十问十答」科普系列文章的第二期,围绕 A/B 测试展开。 1 Q:什么是 A/B 测试? A:A/B 测试作为互联网企业的核心增长手段之一,其价值已在实际应用中被多次验…

ERTEC200P-2 PROFINET设备完全开发手册(6-2)

6.2 诊断与报警实验 首先确认固件为 App1_STANDARD, 将宏定义改为: #define EXAMPL_DEV_CONFIG_VERSION 1 参照第6节的内容,编译和调试固件,并在TIA Portal 中建立RT项目。启动固件后,TIA Portal 切换到在线,可以看…

springboot+vue人职匹配推荐系统(源码+文档)

风定落花生,歌声逐流水,大家好我是风歌,混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的人职匹配推荐系统。项目源码以及部署相关请联系风歌,文末附上联系信息 。 目前有各类成品java毕设,需要请看文…

《离散数学导学》精炼——第9章(函数)

学习是一个长久而艰苦的过程,但不学习则更艰苦。 文章目录 引言正文函数的定义全函数覆盖运算函数的性质(重点)单射满射双射 递归函数良定义 引言 笔者一直觉得在计算机这一学科的学习中,离散数学是极为重要的知识基础。离散化的…

node中模块化

目录 模块化概念模块化规范Node.js 中模块的分类加载模块 模块作用域module对象module.exports 对象exports 对象 Node.js中的模块化规范 模块化概念 模块化是指解决一个复杂问题时,自顶向下逐层把系统划分成若干模块的过程。对于整个系统来说,模块是可…

SpringBoot的Filter过滤器结合JWT实现登录验证

概念:Filter 过滤器,是 JavaWeb 三大组件(Servlet、Filter、Listener)之一。 过滤器可以把对资源的请求拦截下来,从而实现一些特殊的功能。 过滤器一般完成一些通用的操作,比如:登录校验、统一编码处理、敏感字符处理等…

看完这篇文章你就彻底懂啦{保姆级讲解}-----(LeetCode刷题27移除元素) 2023.4.18

目录 前言算法题(LeetCode 27.移除元素)—(保姆级别讲解)分析题目算法思想(重要)暴力解法代码:双指针法(快慢指针法)代码:反思 结束语 前言 本文章一部分内容…

UDP - C/S模型

由于UDP不需要维护连接,程序逻辑简单了很多,但是UDP协议是不可靠的,保证通讯可靠性的机制需要在应用层实现。 通信函数 ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags,struct sockaddr *src_addr, socklen_t *addrlen); 参…

无人机动力系统优化测试平台-15kg级-Flight Stand 15

产品简介 通过Flight Stand 15测试台对电机和螺旋桨的拉力,扭矩,转速,电流,电压,温度,空速,螺旋桨效率和电机效率的测量帮助您精准地描述和评估其性能参数,这是我们五年多来的无人机…

[JAVASE]初识Java:数据类型与变量

CSDN的各位友友们你们好,今天千泽为大家带来的是 [JAVASE]初识Java:数据类型与变量、运算符, 接下来让我们一起了解一下吧! 如果对您有帮助的话希望能够得到您的支持和关注,我会持续更新 数据类型与变量 数据类型 在Java中数据类型分为基本数据类型与引用数据类…

15.2 矩阵链乘法

1.代码 public class MatrixChainMultiplication {public static void main(String[] args) { // 在该代码中,我们首先创建了两个n * n的矩阵m和s,分别用于记录最优值和分割点。 其中m 矩阵 通过i j 来显示在i到j的矩阵链中最优解 // // …

JavaSE/异常

博客制作不易,欢迎各位点赞👍收藏⭐关注 前言 在使用Java编写代码时,我们难免会遇到数组越界、运行超时、栈溢出等异常问题。所以如果我们熟练掌握异常的定义和使用,这对我们学习Java有很大的帮助。 一、异常的定义 程序执行过程…

图书馆管理系统【GUI/Swing+MySQL】(Java课设)

系统类型 Swing窗口类型Mysql数据库存储数据 使用范围 适合作为Java课设!!! 部署环境 jdk1.8Mysql8.0Idea或eclipsejdbc 运行效果 本系统源码地址:https://download.csdn.net/download/qq_50954361/87682509 更多系统资源库…

计算机视觉的热门研究方向与发展趋势

计算机视觉产业链 工业界:对学术研究提出需求 最火的两个概念:自动驾驶和元宇宙 相关热点研究方向: (1)建图技术:三维重建技术,包括SLAM、定位、建图、更新等技术;(2&…

学习机器人SLAM导航核心技术(一)

本章节,我们将学习基于SLAM导航的机器人技术。 学习资料主要参照张虎的《机器人SLAM导航核心技术与实战》和高翔的《视觉SLAM十四讲》。 以机器人SLAM导航核心技术与实战作为学习的技术路线。在此基础上增加自己学习到的内容。 第1章:ROS入门必备知识 …

Git介绍与相关操作

git简介 git是用于版本控制的软件,保留历史记录,便于回溯 GitHub中文官方文档 访问GitHub GitHub520 无法访问GitHub太常见了,主要方法就是查ip,改本地host文件。 GitHub520本质也是修改hosts来实现,但是无需手动查…

Pycharm Debug调试技巧

Pycharm Debug调试 Python中的Bug是指程序在执行过程中出现错误的情况。这些错误可能会导致程序崩溃、输出意外的结果或者根本不运行。 常见的Python Bug包括: 语法错误:例如拼写错误、缺少冒号、使用了错误的缩进等等。逻辑错误:程序可以…

草图大师su通过照片建模建筑 零插件sketchup

打开sketchup,相机-匹配新照片。照片的要求: “匹配照片”最适合主要由直角组成的结构。您肯定至少需要一个直角才能使用匹配照片。使用从角落以大约 45 度角拍摄的照片。上图来自谷歌街景图是以 45 度角拍摄的图像示例。如果您正在拍照,则可…

模糊数学求传递闭包(C语言)

一、问题描述 我们在模糊数学中利用传递闭包法进行聚类分析的时候,需要求模糊相似矩阵的传递闭包,对于阶数比较高的矩阵,手工计算太过于繁琐,我们可以借助程序实现。 我们先来看一下模糊矩阵的合成规则: 设为有限论域…