Spark核心编程:创建RDD(集合、本地文件、HDFS文件)

理解Hadoop & Spark Hadoop Spark 1. Spark与Hadoop的关系 2. Spark的特点 3. Spark架构&工作流程 名词解释 运行过程 补充Job,Stage,Task的关系 DAG和RDD是什么 RDD的相关操作(creation, transformation, action) 开发者需要做哪部分工作 Hadoop 在大数据的背景下,我们需要分布式数据存储和处理的工具,来解决一些现实问题(如:基础设施崩溃(hardware broken/network failure 阅读详情

1,创建RDD

1.进行Spark核心编程时,首先要做的第一件事,就是创建一个初始的RDD。该RDD中,通常就代表和包含了Spark应用程序的输入源数据。然后在创建了初始的RDD之后,才可以通过Spark Core提供的transformation算子,对该RDD进行转换,来获取其他的RDD。

2.Spark Core提供了三种创建RDD的方式,包括:使用程序中的集合创建RDD;使用本地文件创建RDD;使用HDFS文件创建RDD。
注意:

1.使用程序中的集合创建RDD,主要用于进行测试,可以在实际部署到集群运行之前,自己使用集合构造测试数据,来测试后面的spark应用的流程。

2.使用本地文件创建RDD,主要用于临时性地处理一些存储了大量数据的文件。

3.使用HDFS文件创建RDD,应该是最常用的生产环境处理方式,主要可以针对HDFS上存储的大数据,进行离线批处理操作。

2.并行化集合创建RDD

1.如果要通过并行化集合来创建RDD,需要针对程序中的集合,调用SparkContext的parallelize()方法。Spark会将集合中的数据拷贝到集群上去,形成一个分布式的数据集合,也就是一个RDD。相当于是,集合中的部分数据回到一个节点上,而另一部分数据会到其他节点上。然后就可以用并行的方式来操作这个分布式数据集合,即RDD。

2.调用parallelize()时,有一个重要的参数是可以指定,就是要将集合切分成多个partition。Spark会为每一个partition运行一个task来进行处理。Spark官方的建议是,为集群中的每个CPU创建2~4个partition。Spark默认会根据集群的情况来设置partition的数量。但是也可以在调用parallelize()方法是,传入第二个参数,来设置RDD的partition数量。

3.案例:1到10累加就和。

Java版:

    //创建JavaSparkContext
    JavaSparkContext sc = new JavaSparkContext(conf);
    //通过并行化集合的方式创建RDD
    List<Integer> numbers = Arrays.asList(1,2,3,4,5,6,7,8,9,10);
    JavaRDD<Integer> numberRDD = sc.parallelize(numbers);

    //执行reduce算子操作
    //相当于,先进行1+2=3,接着3+3=6,。。。
    int sum = numberRDD.reduce(new Function2<Integer, Integer, Integer>() {

        private static final long serialVersionUID = 1L;

        @Override
        public Integer call(Integer num1, Integer num2) throws Exception {

            return num1 + num2;
        }
    });
    System.out.println(sum);

Scala版:

val numbers = Array(1 to 10:_*)
val numberRDD = sc.parallelize(numbers, 3)
val num = numberRDD.reduce(_ + _)
println(num)

3. 使用本地文件和HDFS创建RDD

1.Spark是支持使用任何Hadoop支持的存储系统上的文件创建RDD的,比如说HDFS、Cassandra、HBase以及本地文件。通过调用SparkContext的textFile()方法,可以针对本地文件或HDFS文件创建RDD。
注意:

1、如果是针对本地文件的话,如果是在windows上本地测试,windows上有一份文件即可;如果是在spark集群上针对linux本地文件,那么需要将文件拷贝到所有worker节点上。

2、Spark的textFile()方法支持针对目录、压缩文件以及通配符进行RDD创建。

3、Spark默认会为hdfs文件的每一个block创建一个partition,但是也可以通过textFile()的第二个参数手动设置分区数量,只能比block数量多,不能比block数量少。
案例:文件字数统计

java版:

            //使用本地文件来创建RDD 
    JavaRDD<String> lines = sc.textFile("G://SparkDevel//test//wordCount//data//spark.txt");
    //使用HDFS文件来创建RDD
    //avaRDD<String> lines = sc.textFile("hdfs://spark1:9000/data/input/spark.txt");
    //RDD中每个元素的长度
    JavaRDD<Integer> length = lines.map(new Function<String, Integer>() {
        private static final long serialVersionUID = 1L;

        @Override
        public Integer call(String line) throws Exception {
            return line.length();
        }
    });
    //RDD中字母数量
    int numbers = length.reduce(new Function2<Integer, Integer, Integer>() {

        private static final long serialVersionUID = 1L;

        @Override
        public Integer call(Integer v1, Integer v2) throws Exception {
            return v1 + v2;
        }
    });
    //打印
    System.out.println(numbers);

Scala版:

//使用本地文件创建RDD
val lines = sc.textFile("G://SparkDevel//test//wordCount//data//spark.txt", 4)
//使用HDFS文件创建RDD
//val lines = sc.textFile("hdfs://spark1:9000/data/input/spark.txt", 4)
val numbers = lines.map(line => line.length()).reduce(_ + _)
println(numbers)

4.其他特列的方法来创建RDD

1、SparkContext.wholeTextFiles()方法,可以针对一个目录中的大量小文件,返回(filename,fileContent)组成的pair,作为一个PairRDD,而不是普通的RDD。普通的textFile()返回的RDD中,每个元素就是文件中的一行文本。

2、SparkContext.sequenceFile(K,V)()方法,可以针对SequenceFile创建RDD,K和V泛型类型就是SequenceFile的key和value的类型。K和V要求必须是Hadoop的序列化类型,比如IntWritable、Text等。

3、SparkContext.hadoopRDD()方法,对于Hadoop的自定义输入类型,可以创建RDD。该方法接收JobConf、InputFormatClass、Key和Value的Class。

4、SparkContext.objectFile()方法,可以针对之前调用RDD.saveAsObjectFile()创建的对象序列化的文件,反序列化文件中的数据,并创建一个RDD。

Spark学习笔记10:创建RDD 目录 一、什么是RDD (一)RDD概念 (二)RDD示例 (三)RDD主要特征 二、做好准备工作 (一)准备文件 1、准备本地系统文件 2、启动HDFS服务 3、准备HDFS系统文件 (二)启动SparkShell 1、启动Spark服务 2、启动Spark Shell 三、创建RDD (一)从对象集合创建RDD 1、利用parallelize()方法创建RDD 2、利用makeRDD()方法创建RDD 3、总结说明 (二)从外部存储创建RDD 1、读取...... 阅读详情

相关推荐

Spark大数据 掌握RDD的创建

在Spark中,RDD是数据处理的核心数据结构。掌握RDD的创建方式以及理解其特性对于高效地使用Spark进行大数据处理至关重要。从集合、外部数据源、其他RDD转换以及自定义方式创建RDD,都是常见的RDD创建方法。同时,理解分区和分区数、缓存等概念,可以帮助我们更好地优化Spark作业的性能。

IT深耕十余载,大道之简 1395

RDD 三种创建方式

从一个已经存在的集合,数组上,通过 SparkContext 对象调用 parallelize() 方法创建 RDD。2.创建一个数组,通过parallelize() 方法实现。1.需要在 linux 本地创建 文件 test.txt。1.需要在 HDFS 上创建目录 data。2.需要从本地上传一个文件到 HDFS 上。一.从 linux 本地文件系统加载数据创建RDD。3.读取本地文件创建RDD。二.从 HDFS 加载数据创建 RDD。1.打开 spark。三.通过并行集合创建 RDD。

weixin_64358432的博客 1335

Spark RDD编程基本操作

Spark RDD编程基本操作

日常分享数据分析开发、编程语言内容 3077

大数据基础平台——Spark基础

(1)了解与熟悉Spark的安装; (2)掌握Spark的运行方式; (3)了解与熟悉Spark的运行位置、运行参数。

Hydrox_的博客 633

Spark基础:创建RDD

Spark基础:创建RDD

m0_63797754的博客 1138

Spark【使用篇】02:创建RDD【使用集合创建RDD、使用本地文件和HDFS文件创建RDD】

Spark【使用篇】02:创建RDD【使用集合创建RDD、使用本地文件和HDFS文件创建RDD】

weixin_40612128的博客 1948

Spark RDD 的创建方式

从Linux本地文件系统加载数据创建RDD: (1)先在Linux本地文件系统创建一个文件为:test.txt: 创建文件命令:touch test.txt 并对test.txt写入数据:vi test.txt 对test.txt写入如下内容:(如下图所示:) hadoop spark itcast heima scala spark spark itcast itcast hadoop (2) 启动Spark集群:sbin/start-all.sh (3)启动Spark.

m0_59839948的博客 1937

Spark基础学习笔记16:创建RDD

RDD概念,创建RDD

howard2005的专栏 2867

用spark(spark-shell),从本地文件创建一个RDD

scala> val textFile=sc.textFile("README.md") 16/07/07 07:41:40 WARN util.SizeEstimator: Failed to check whether UseCompressedOops is set; assuming yes 16/07/07 07:41:40 INFO storage.MemoryStor

AStar的博客 4542

非sudo用户如何安全使用Docker:Rootless模式实战指南

Docker Rootless模式是一种基于Linux用户命名空间(userns)的容器运行时安全机制,它通过UID/GID映射、fuse-overlayfs文件系统和slirp4netns网络栈,在不提升权限的前提下实现容器隔离。其核心原理是将容器内root身份映射为宿主机非特权用户,从而规避docker组等价root的安全风险。相比传统root模式,Rootless在权限控制、逃逸防护和多租户隔离方面具备天然优势,适用于CI/CD流水线、Kubernetes边缘节点及受限生产环境。本文聚焦无sudo权限

weixin_30274627的博客 349

YOLO-FastestV2从零部署到移动端推理实战手册

本文详细介绍了YOLO-FastestV2从零开始的完整部署流程,涵盖环境搭建、模型训练、格式转换及移动端部署。通过实战步骤,指导开发者将这一轻量级目标检测模型成功部署到Android设备,实现实时推理。文章重点解析了PyTorch到NCNN的模型转换与优化,助力移动端AI应用开发。

l1k9j8h7g6的博客 668

21、Spark核心编程之创建RDD(集合、本地文件、HDFS文件)

创建RDD 进行Spark核心编程时,首先要做的第一件事,就是创建一个初始的RDD。该RDD中,通常就代表和包含了Spark应用程序的输入源数据。然后在创建了初始的RDD之后,才可以通过Spark Core提供的transformation算子,对该RDD进行转换,来获取其他的RDD。 Spark Core提供了三种创建RDD的方式,包括:使用程序中的集合创建RDD;使用本地文件创建RDD;使用...

ZJ__ZFH的博客 1839

5分钟搞懂SCMA:稀疏码多址接入的核心原理与实战应用

本文深入浅出地解析了SCMA(稀疏码多址接入)的核心原理与实战应用。通过对比传统正交多址技术,阐释了SCMA如何通过非正交叠加和稀疏码本设计,实现远超资源单元数的用户接入,从而有效应对5G海量机器通信(mMTC)的挑战。文章还探讨了其在上行海量连接、免授权接入等场景的应用潜力及工程实现中的关键考量。

zeta9的博客 264

spark——RDD编程

并行集合的一个重要参数是slices,表示数据集切分的份数。这一切对使用者是透明的。它是被分区的,分为多个分区,每个分区分布在集群中的不同节点上(分区即partition),从而让RDD中的数据可以被并行操作。当我们,在创建了初始的RDD之后,才可以通过Spark Core提供的transformation算子,对该RDD进行transformation(转换)操作,来获取其他的RDD。RDD的数据默认的情况下是存放在内存中的,但是在内存资源不足时,Spark会自动将RDD数据写入磁盘。

CarveStone的博客 869

RepHead一种重参数化检测头用于提升YOLOv8在困难样本上的检测性能

在目标检测任务中,困难样本通常是指那些由于特殊背景、遮挡、低分辨率或极度小物体等因素,导致模型难以识别的样本。这类样本对传统YOLO系列模型的影响较大,常常造成漏检或误检。重参数化(Reparameterization)是一种深度学习中常用的技术,旨在通过对网络参数的变换,使得模型在训练过程中能够更加灵活地适应不同的数据特征。通过对原始网络结构的参数进行重新表达,能够引导模型在训练过程中学习到更加有效的特征。本文详细介绍了YOLOv8的改进——RepHead检测头,并深入分析了它在解决困难样本检测中的应用。

博客 1209

利用SIMULINK搭建一个16QAM调制解调收发系统

1发送模块设计 根据前面介绍的理论知识,我们可以知道16QAM的基本结构,首先我来设计QAM发送段的SIMULINK仿真模块。 图1 16QAM的发送端模块 他的基本工作流程为:将信号通过两路升余弦滤波器,得到滤波以后的信号,滤波器的作用就是为了防止码间干扰。然后将滤波以后的信号和SIN,COS相乘得到调制信号,将调制 下面一一介绍每个模块的具体参数设置以及各个部分信号的波形图。 图2 产生随机数据的信号源 第一部分信号是产生一组随机的数字,作为信源,第二个模块将信号...

FPGA/MATLAB学习教程/源码/项目合作开发 4776

Spark:RDD操作和持久化

创建RDD 进行Spark核心编程时,首先要做的第一件事,就是创建一个初始的RDD。该RDD中,通常就代表和包含了Spark应用程序的输入源数据。然后在创建了初始的RDD之后,才可以通过Spark Core提供的transformation算子,对该RDD进行转换,来获取其他的RDD Spark Core提供了三种创建RDD的方式 使用程序中的集合创建RDD 使用本地文件创建RDD 使用HDFS...

标题 946

【异常】Cursor 编辑器 “Too many computers“ 报错排查与完整解决方案

该报错通常在启动Cursor、调用AI对话/代码补全核心功能时触发,会直接阻断编辑器AI能力的正常使用。

奶爸的编程之路,也就一周冷个三天 457

什么是Spark RDD?(RDD的介绍与创建)

什么是Spark RDD?RDD的介绍与创建

weixin_74292291的博客 1475

DeepLabv3+改进68:全网首发-添加DBlock模块 |高效且鲁棒的多任务低光图像修复神经网络

本文提出了一种高效鲁棒的多任务低光图像修复神经网络DarkIR,针对夜间或昏暗条件下图像存在的噪点、光线不足和模糊问题。不同于现有方法分别处理去模糊和低光增强任务,该模型采用新的注意力机制增强CNN感受野,在降低计算成本的同时,在LOL-Blur、LOLv2和Real-LOLBlur数据集上取得最优结果,并能良好泛化到真实夜间图像。

AIcurator的博客 325

Modelsim:LPDDR5仿真(含美光仿真模型官方sv&vcs代码)

虽然,三星在设计跟量产上,早于其他家存储产商,但是镁光后来居上了,是业界首家支持全速 LPDDR5 的供应商,并且开发者在做开发的时候,也是用美光颗粒比较多,所以这里就先以美光的仿真模型为主进行仿真。 本工程为美光官方工程,支持Modelsim、VCS、ncverilog三种仿真器仿真。模型破解过,为完整system-verilog代码。

千歌叹尽执夏的博客 1283

学习笔记Spark(四)—— Spark编程基础(创建RDD、RDD算子、文件读取与存储)

文章目录一、创建RDD1.1、启动Spark shell1.2、创建RDD1.2.1、从集合中创建RDD1.2.2、从外部存储中创建RDD任务1:二、RDD算子2.1、map与flatMap算子应用2.1.1、map2.1.2、flatMap2.1.3、mapPartitions2.2、sortBy与filter算子应用2.2.1、sortBy2.2.2、filter任务2:2.3、交集与并集计算的算子应用2.3.1、distinct2.3.2、union2.3.3、intersection2.3.4、su

别呀的博客 8381

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

5、创建RDD(集合、本地文件、HDFS文件)

一、创建RDD1、创建RDD进行Spark核心编程时,首先要做的第一件事,就是创建一个初始的RDD。该RDD中,通常就代表和包含了Spark应用程序的输入源数据。然后在创建了初始的RDD之后,才可以通过Spark Core提供的transformation算子,对该RDD进行转换,来获取其他的RDD。 Spark Core提供了三种创建RDD的方式,包括:使用程序中的集合创建RDD;使用本地文...

weixin_30296405的博客 506

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Spark 创建 RDD 的三种方式

进行 Spark 核心编程时,首先要做的第一件事就是创建一个初始 RDD。 该 RDD 中,通常就代表和包含了 Spark 应用程序的输入源数据。 然后创建了初始的 RDD 之后,才可以通过 Spark Core 提供的 transformation 算子,对该 RDD 进行转换,来获取其他 RDD。 Spark Core 提供了三种创建 RDD 的方式,包括:使用程序中的集合创建 RDD;...

天道酬勤 3243

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Spark RDD的创建

将数据集(hello, world, scala, spark, love, spark, happy)存储在三个节点上,节点一存储(hello, world),节点二存储(scala, spark, love),节点三存储(spark, happy),这样对三个节点的数据可以并行计算,并且三个节点的数据共同组成了一个RDD。在编程时,可以把RDD看作是一个数据操作的基本单位,而不必关心数据的分布式特性,Spark会自动将RDD的数据分发到集群的各个节点。不同的是,数据的来源路径不同。

梁辰兴的博客 1698

Spark Core学习笔记2:创建RDD(集合、本地文件、HDFS文件)

1.创建RDD 进行Spark核心编程时,首先要做的第一件事,就是创建一个初始的RDD。该RDD中,通常就代表和包含了Spark应用程序的输入源数据。然后在创建了初始的RDD之后,才可以通过Spark Core提供的transformation算子,对该RDD进行转换,来获取其他的RDD Spark Core提供了三种创建RDD的方式,包括: 使用程序中的集合创建RDD 使用本地文件创建RDD 使用HDFS文件创建RDD 经验总结: 使用程序中的集合创建RDD,主要用于进行测试,可以在实际

一壶清茶的专栏 653
上一篇: Spark核心编程:Spark架构原理
下一篇: Spark核心编程:操作RDD(transformation和action案例实战)
VectorYang
博客等级 码龄10年 17粉丝 23原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值