
RDD partitioner入门详解
发布日期:2021-05-18 08:21:33
浏览次数:11
分类:精选文章
本文共 1163 字,大约阅读时间需要 3 分钟。
什么是分区器?
在Spark的 RDD(弹性分布式数据集)中,分区器是一个属性,默认值为`None`。它可以被子类重写
类似代码示例: ```scala @transient val partitioner: Option[Partitioner] = None ``` 这是定义一个可选的分区器属性的示例,值默认为`None`
分区器的作用
分区器决定 RDD 的分区方式。具体的分区方式决定了数据在集群中的分布情况。你可以通过设置分区器来测试不同的分区方法。
默认情况下,分区器为`None`。如下代码可以查看默认分区器的情况: ```scala object RDDTest extends App { val conf = new SparkConf().setAppName("wordcount").setMaster("local") val sc = new SparkContext(conf) val lines: RDD[String] = sc.textFile("D:\\tmp", 2) println(lines.partitioner) // 输出: None } ``` 代码解释:默认情况下,partitioner 属性的值是`None`
(注:示例代码中,`D:\\tmp` 路径需要根据实际情况调整)
自定义分区器的示例
对于键值对形式的 RDD,可以通过设置自定义的分区器来重新定义分区方式。以下是一个常用的分区器类型——哈希分区器。
代码示例: ```scala object RDDTest extends App { val conf = new SparkConf().setAppName("wordcount").setMaster("local") val sc = new SparkContext(conf) private val rdd: RDD[Int] = sc.parallelize(Array(1, 2, 3)) private val value: RDD[(Int, Int)] = rdd.map((x: Int) => (x, 1)).partitionBy(new HashPartitioner(3)) println(value.partitioner) // 输出: Some(org.apache.spark.HashPartitioner@3) } ``` 代码解释:创建了一个 RDD 并通过`partitionBy`方法设置了哈希分区器。hashPartitioner 参数指定了分区的数量(这里为3)。因此,分区器属性将包含一个哈希分区器实例
发表评论
最新留言
不错!
[***.144.177.141]2025年04月20日 06时23分55秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
【编程】C语言入门:1到 100 的所有整数中出现多少个数字9
2019-03-09
flink启动(二)
2019-03-09
pair的用法
2019-03-09
Flex 布局的自适应子项内容过长导致其被撑大问题
2019-03-09
PL/SQL 动态Sql拼接where条件
2019-03-09
【自学Flutter】4.1 Material Design字体图标的使用(icon)
2019-03-09
【换行符】什么时候用cin.get()吃掉输入流中的换行符
2019-03-09
广东外语外贸大学第三届网络安全大赛Writeup
2019-03-09
SpringBoot使用RedisTemplate简单操作Redis的五种数据类型
2019-03-10
Thymeleaf sec:authorize 标签不生效
2019-03-11
微信JS-SDK DEMO页面和示例代码
2019-03-11
一张图搞定RPC框架核心原理
2019-03-11
他来了他来了,他带着云栖大会的免费门票走来了
2019-03-11
获取linux 主机cpu类型
2019-03-11
Flask--简介
2019-03-11
16 python基础-恺撒密码
2019-03-11
Frame--Api框架
2019-03-11
Boostrap技能点整理之【网格系统】
2019-03-11