博客
关于我
RDD partitioner入门详解
阅读量:648 次
发布时间:2019-03-15

本文共 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)。因此,分区器属性将包含一个哈希分区器实例

转载地址:http://wxsmz.baihongyu.com/

你可能感兴趣的文章
caffe训练的时候遇到的text-format 错误解决方案。
查看>>
Java 8新特性(一):Lambda表达式
查看>>
Little Zu Chongzhi's Triangles
查看>>
Train Problem II(卡特兰数+大数乘除)
查看>>
一些技术博客
查看>>
第01问:MySQL 一次 insert 刷几次盘?
查看>>
分布式 | DBLE 3.20.07.0 来啦!
查看>>
振荡器指标
查看>>
libvirtd:内部错误:Failed to apply firewall rule
查看>>
优先级队列2
查看>>
属性的使用错误
查看>>
TiKV 源码解析系列文章(十三)MVCC 数据读取
查看>>
1900分图论 : 1183E1 LCA + Kruskal
查看>>
(建议收藏)计算机网络:传输层概述、UDP协议与可靠传输协议习题解析与拓展
查看>>
Android 开发常用的工具类(更新ing)
查看>>
EasyUI的简单介绍
查看>>
HTTP 错误 500.21 - Internal Server Error 发布网站遇到这个错误
查看>>
初次安装webpack之后,提示安装webpack-cli
查看>>
Java后端服务明显变慢诊断思路
查看>>
java中带参数的try(){}语法——关闭资源
查看>>