Spark Partition 分区记录
来源:互联网 发布:python recv 字符串 编辑:程序博客网 时间:2024/06/06 06:16
partitionBy 函数 自定义 Partitioner
partitioner 是在map阶段用来分区的,跟mapreduce的分区对应。可以用partitoner 来把数据分成多个区,每个区中包含特定key的数据。如果没有指定partitioner 默认使用 HashPartitioner。
注意:对spark RDD, partitioner 只有在key-value类型的RDD中可以设置partitioner信息。
数据格式:3 http://tinyurl.com/3jcvsm
自定义一个partitoner。这个partitoner的分区方式为,以传入的一个String 类型array来分区,本例是用来把相同的域名放在同一个分区(接上一个URL的例子)
//继承Partitioner 传入一个String类型的array(用于确定分区信息)class HOSTpartitioner(ins: Array[String]) extends Partitioner{ //初始化一个hashMap对象 val parMap = new mutable.HashMap[String,Int]() var count = 0 //遍历array 把它的每个位置上的值作为key,每个位置的下标作为vale存入hashMap中 for ( i <- ins ){ parMap += (i->count) count += 1 } //必须实现的方法,指定分为几个区。 override def numPartitions : Int = count //获取分区号,传入的是key-value类型中的可以。 override def getPartition(key: Any) :Int = { val urls = new URL(key.toString) val host = urls.getHost return parMap.getOrElse(host.toString,0) } }
partition使用:(接上一个URL的例子)
//获取所有有URL的域名,去重 val rdd6 = rdd1.map(xc =>{ val url = xc._1; val urls = new URL(url) val host = urls.getHost host }).distinct().collect()// rdd6.foreach(println) //设置partition rdd1.partitionBy(new HOSTpartitioner(rdd6))
0 0
- Spark Partition 分区记录
- 计算质数通过分区(Partition)提高Spark的运行性能
- partition分区
- Spark Partition
- MySQL partition分区I
- Oracle分区(Partition)
- MySQL分区(Partition)
- Oracle 分区(partition)技术
- oracle用partition分区
- oracle—partition分区
- PARTITION 分区的作用
- 初识Liunx--分区(Partition)
- Oracle 分区(partition)技术
- DataStage 分区(Partition)
- datastage- 分区partition
- coalesce partition 收缩分区
- Exchange partition 交换分区
- Datastage 分区partition
- Android 官方文档之 -进程和线程
- Android布局实现圆角边框
- jmeter SampleResult
- 【深度剖析HMM(附Python代码)】1.前言及隐马尔科夫链HMM的背景
- Linux运维学习之应届生寻找工作
- Spark Partition 分区记录
- JVM调优总结(七)-典型配置举例1
- Linux学习篇第二章之~练习 swap 脚本命令
- String,StringBuffer、StringBuilde
- 企业级链表库测试
- background-size:cover兼容IE8的方法
- eclipse开发使用recyclerview步骤介绍
- 蓝桥杯--第七届决赛:反幻方
- Discuz!开发之网站后台表单生成函数showsetting()详情