Spark学习之RDD编程(2)

简介: Spark学习之RDD编程(2)1. Spark中的RDD是一个不可变的分布式对象集合。2. 在Spark中数据的操作不外乎创建RDD、转化已有的RDD以及调用RDD操作进行求值。3. 创建RDD:1)读取一个外部数据集2)在驱动器程序里分发驱动器程序中的对象集合。4. RDD支持的操作:1)转换操作,由一个RDD生成一个新的RDD。2)行动

Spark学习之RDD编程(2)

1. Spark中的RDD是一个不可变的分布式对象集合。

2. 在Spark中数据的操作不外乎创建RDD、转化已有的RDD以及调用RDD操作进行求值。

3. 创建RDD:1)读取一个外部数据集2)在驱动器程序里分发驱动器程序中的对象集合。

4. RDD支持的操作:

1)转换操作,由一个RDD生成一个新的RDD。
2)行动操作,对RDD进行计算结果,并把结果返回到驱动器程序中,或者把结果存储到外部存储系统(如HDFS)。

5. Spark程序或者shell会话都会按如下方式工作:

1)从外部数据创建出输入RDD。
2)使用诸如filter()这样的转化操作对RDD进行转化,以定义一个新的RDD。
3)告诉Spark对需要被重用的中间结果RDD执行persist()操作。
4)使用行动操作 (例如count()和first()等)来触发一次并行计算,Spark会对计算进行优化后在执行。

6. 创建RDD

快速创建RDD,把程序中一个已有的集合传给SparkContext的parallelize()方法,不过这种方法除了开发原型和测试时,这种方式用的并不多。
Python中的parallelize()方法
    lines = sc.parallelize(["pandas","i like pandas"])
Scala中的parallelize()方法
    val lines = sc.parallelize(List("pandas","i like pandas"))
Java中的parallelize()方法
    JavaRDD<String> lines = sc.parallelize(Arrays.asList("pandas","i like pandas"))

7. 惰性求值

RDD的转化操作都是惰性求值的。

8. 向Spark传递函数

8.1 Python
传递比较短的函数,使用lambda表达式来传递;也可以传递顶层函数或是定义的局部函数。
8.2 Scala,可以定义的内联函数、方法的引用或静态方法传递给Spark,就行Scala的其他函数式API一样。
8.3 Java,函数需要作为实现了Spark的org.apache.spark.api.java.function包中的任一函数接口的对象来传递。

9. 常见的转化操作和行动操作

9.1 针对个元素的转化操作
flatmap()       对每个输入元素生成多个输出元素。
map()           接受一个函数,把这个函数用于RDD中的每个元素,将函数的返回结果作为结果RDD中的对应元素的。返回的类型不必和输入类型相同。
filter()        接受一个函数,并将RDD中满足该函数的元素放入新RDD中返回。
distinct()      去重
sample(withReplacement,fraction,[seed])         对RDD采样,以及是否替换
9.2 伪集合操作
合并和相交要求RDD数据类型相同。
(不需混洗)union()           生成一个包含两个RDD中所有元素的RDD
(需要混洗)intersection()    求两个RDD共同的元素的RDD
(需要混洗)subtract()        移除一个RDD中的内容
(需要混洗)cartesian)()      与另一个RDD的笛卡尔积
目录
相关文章
|
10月前
|
分布式计算 Kubernetes 调度
Kubeflow-Spark-Operator-架构学习指南
本指南系统解析 Spark Operator 架构,涵盖 Kubebuilder 开发、控制器设计与云原生集成。通过四阶段学习路径,助你从部署到贡献,掌握 Kubernetes Operator 核心原理与实战技能。
589 0
|
机器学习/深度学习 人工智能 自然语言处理
3 秒音频也能克隆?拆解 Spark-TTS 架构的极致小样本学习
本文深入解析了 Spark-TTS 模型的架构与原理,该模型仅需 3 秒语音样本即可实现高质量的零样本语音克隆。其核心创新在于 BiCodec 单流语音编码架构,将语音信号分解为语义 Token 和全局 Token,实现内容与音色解耦。结合大型语言模型(如 Qwen 2.5),Spark-TTS 能直接生成语义 Token 并还原波形,简化推理流程。实验表明,它不仅能克隆音色、语速和语调,还支持跨语言朗读及情感调整。尽管面临相似度提升、样本鲁棒性等挑战,但其技术突破为定制化 AI 声音提供了全新可能。
1074 35
|
存储 分布式计算 并行计算
【赵渝强老师】Spark中的RDD
RDD(弹性分布式数据集)是Spark的核心数据模型,支持分布式并行计算。RDD由分区组成,每个分区由Spark Worker节点处理,具备自动容错、位置感知调度和缓存机制等特性。通过创建RDD,可以指定分区数量,并实现计算函数、依赖关系、分区器和优先位置列表等功能。视频讲解和示例代码进一步详细介绍了RDD的组成和特性。
693 0
|
存储 分布式计算 算法
大数据-106 Spark Graph X 计算学习 案例:1图的基本计算、2连通图算法、3寻找相同的用户
大数据-106 Spark Graph X 计算学习 案例:1图的基本计算、2连通图算法、3寻找相同的用户
492 0
|
分布式计算 Spark
【赵渝强老师】Spark RDD的依赖关系和任务阶段
Spark RDD之间的依赖关系分为窄依赖和宽依赖。窄依赖指父RDD的每个分区最多被一个子RDD分区使用,如map、filter操作;宽依赖则指父RDD的每个分区被多个子RDD分区使用,如分组和某些join操作。窄依赖任务可在同一阶段完成,而宽依赖因Shuffle的存在需划分不同阶段执行。借助Spark Web Console可查看任务的DAG图及阶段划分。
868 15
|
存储 缓存 分布式计算
【赵渝强老师】Spark RDD的缓存机制
Spark RDD通过`persist`或`cache`方法可将计算结果缓存,但并非立即生效,而是在触发action时才缓存到内存中供重用。`cache`方法实际调用了`persist(StorageLevel.MEMORY_ONLY)`。RDD缓存可能因内存不足被删除,建议结合检查点机制保证容错。示例中,读取大文件并多次调用`count`,使用缓存后执行效率显著提升,最后一次计算仅耗时98ms。
502 0
【赵渝强老师】Spark RDD的缓存机制
|
分布式计算 算法 Spark
spark学习之 GraphX—预测社交圈子
spark学习之 GraphX—预测社交圈子
530 0
|
分布式计算 Scala Spark
educoder的spark算子学习
educoder的spark算子学习
344 0
|
消息中间件 分布式计算 Kafka
大数据-99 Spark 集群 Spark Streaming DStream 文件数据流、Socket、RDD队列流
大数据-99 Spark 集群 Spark Streaming DStream 文件数据流、Socket、RDD队列流
362 0
|
SQL 分布式计算 大数据
大数据-94 Spark 集群 SQL DataFrame & DataSet & RDD 创建与相互转换 SparkSQL
大数据-94 Spark 集群 SQL DataFrame & DataSet & RDD 创建与相互转换 SparkSQL
508 0