Spark问题笔记5

本文介绍如何在Spark中使用弹性分布数据集(RDD)处理文本文件,包括数据加载、构造数据集、执行map操作及collect操作,以及如何通过SparkContext创建RDD。文章深入探讨了RDD的分布式计算原理,强调了在Spark环境下处理大规模数据集时的优化策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

对于文本文件,在Spark中,一行就是一条记录,若干条记录组成一个集合。我们 原来的算法直接在每一行上进行计算,就不行了。需要先构建数据集,然后通过数据集的操作, 实现我们的目的

  1. 将数据载入并构造数据集
    在Spark中,这个数据集被称为`RDD` :弹性分布数据集。
  2. 对数据集进行map操作
    将原始记录映射为新的记录,并返回一个新的RDD。 
  3. 对map后的数据集进行collect操作,获得合并的结果
      collect操作提取RDD中的全部数据到本地。

Spark的RDD自动进行数据的切分和结果的整合。Spark提供了80多种操作符对集合进行操作。


SparkContext对象代表整个Spark集群,是Spark框架功能的入口,可以用来在集群中创建RDD、累加器变量和广播变量。 SparkContext对象创建时可以指明连接到哪个集群管理器上,在Spark-Shell启动时,默认连接到本地的集群管理器。

Spark的核心抽象是一个分布式数据集,被称为弹性分布数据集(RDD) ,代表一个不可变的、可分区、可被并行处理 的成员集合。

RDD对象需要利用SparkContext对象的方法创建,Spark支持从多种来源创建RDD对象,比如:从本地文本文件创建、从Hadoop 的HDFS文件创建、或者通过对其他RDD进行变换获得新的RDD。

RDD的内部实现了分布计算的功能,我们在RDD上执行的操作,是透明地在整个集群上执行的。也就是说,当RDD建立 后,这个RDD就不属于本地了,它在整个集群中有效。当在RDD上执行一个操作,RDD内部需要和集群管理器进行沟通协商。对一个RDD可以进行两种操作:动作(action)和变换(transformation)。动作总是从集群中取回数据,变换总是获得一个新的RDD,这是两种操作的字面上的差异。在RDD上执行一个变换时,RDD仅仅记录要做的变换,只有当RDD上需要执行一个动作时,RDD才 通过集群管理器启动实质分布计算。

在使用Spark时,最好在脑海中明确地区隔出两个区域:本地域集群域。RDD属于集群域,那是Spark管辖的地带; RDD的动作结果属于本地域,这是我们的地盘。只有当RDD的数据返回本地域,我们才能进行再加工,比如打印等等。



http://www.hubwiz.com/




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值