首页 理论教育 用Scala集合创建RDD

用Scala集合创建RDD

时间:2023-06-29 理论教育 版权反馈
【摘要】:Spark提供了两种创建RDD的方式:加载外部数据集和在驱动程序中并行集合。当前Spark需要应用设置Stage的并行Task个数,在未设置的情况下,子RDD会根据父RDD的Partition决定,例如,map操作的子RDD的Partition与父Partition完全一致,Union操作的子RDD的Partition个数为父Partition个数值之和。Stage的并行Task的数量很大程度上决定Spark程序的性能。并行集合是通过在一个已有的集合上调用Spark-Context提供的parallelize方法实现的。通常Spark会自动基于集群状态设置分区数目。也可以通过parallelize的第二个参数手动设置。

用Scala集合创建RDD

Spark程序首先做的第一件事就是创建一个SparkContext对象,它告诉Spark如何访问一个集群。Spark的Shell给用户提供了一个简单强大的工具来分析数据交互,通过运行Spark目录下的脚本即可启动它,同时Shell会创建一个SparkContext的变量sc,启动代码如下。

Spark提供了两种创建RDD的方式:加载外部数据集和在驱动程序中并行集合。每个RDD都有Partitioner属性,它决定了该RDD如何分区,当然Partition的个数还将决定每个Stage的Task个数。当前Spark需要应用设置Stage的并行Task个数(配置项为:spark.default.parallelism),在未设置的情况下,子RDD会根据父RDD的Partition决定,例如,map操作的子RDD的Partition与父Partition完全一致,Union操作的子RDD的Partition个数为父Partition个数值之和。Stage的并行Task的数量很大程度上决定Spark程序的性能。

并行集合(Parallelized collections)是通过在一个已有的集合(ScalaSeq)上调用Spark-Context提供的parallelize方法实现的。集合中的元素被复制到一个可并行操作的分布式数据集中。例如,下面是如何创建一个数字1~5的集合代码。(www.xing528.com)

一旦创建完成,分布式集合(distData)可以被并行操作。例如,可能会调用distDa-ta.reduce((a,b)=>a+b)将这个数组中的元素相加。

并行集合有一个很重要的参数,即切片数(slices),表示一个数据集的切片的份数。Spark会在集群的每一个分片上运行一个任务,集群中的每个CPU通常需要2~4个分区。通常Spark会自动基于集群状态设置分区数目。也可以通过parallelize的第二个参数手动设置(如sc.paralielize(data,10))。注意:某些地方在代码中使用数据分片(分区)的同义词来维持向后兼容性

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈