关于spark当中生成的RDD分区的设置情况。

问题描述:我们知道在spark当中是对RDD进行操作的。所以我们想把数据源当中的数据转化成很多的数据集,这也就是partition的由来。

而我们在将数据转换成RDD之后。我们可以通过设置partition的数量来让计算的效率更高。

首先来看一下官网创建的RDD的描述:

从这段描述当中我们可以看到。通过parallelize来个创建RDD。这个时候创建的partiton数 量是根据集群当中的CPU的核数进行创建的。但是在官网当中我们可以看到

建议是一个核数尽量分配2到4个partition。

通过下面的例子我们来验证这个问题:

我们的集群有5台机器:(我在server1和server5上面提交任务看下面的结果)

我们可以看到在不同的机器上去提交任务的时候,所生成的分区的数量是根据CPU的核数来定的。

下面我们来设置一下载parallellize后面设置partition的个数来定义指定的数据源的分区数是多少。

val parnum = spark.sparkContext.parallelize(num,10)
在这里我们设置第二个参数我们队第二个参数进行了设置。这里设置为10.他会将数据源中的数据切分成10个分区。在数据量比较大的情况下优化计算。

使用这种方式创建的RDD可以对分区的数量进行设置。还有一种创建RDD的方式是通过另外一种方式去创建。(缺点是不能修改分区的数量。只能根据系统CPU的情况定义分区的数量) 代码如下。

val unit = spark.sparkContext.makeRDD(num)   

至此我们通过数据源创建的RDD最简单的方式总结如上。

转载于:https://www.cnblogs.com/gxgd/p/8866205.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值