码迷,mamicode.com
首页 > 其他好文 > 详细

spark自定义分区及示例代码

时间:2015-09-14 15:39:24      阅读:141      评论:0      收藏:0      [点我收藏+]

标签:

有时自己的业务需要自己实现spark的分区函数

以下代码是实现一个自定义spark分区的demo

实现的功能是根据key值的最后一位数字,写到不同的文件

例如:

10写入到part-00000

11写入到part-00001

.

.

.

19写入到part-00009


给读者提供一个自定义分区的思路


import org.apache.spark.{Partitioner, SparkContext, SparkConf}

//自定义分区类,需继承Partitioner类
class UsridPartitioner(numParts:Int) extends Partitioner{
  //覆盖分区数
  override def numPartitions: Int = numParts
  
  //覆盖分区号获取函数
  override def getPartition(key: Any): Int = {
    key.toString.toInt%10
  }
}

object Test {
  def main(args: Array[String]) {
    val conf=new SparkConf()
    val sc=new SparkContext(conf)

    //模拟5个分区的数据
    val data=sc.parallelize(1 to 10,5)
    
    //根据尾号转变为10个分区,分写到10个文件
    data.map((_,1)).partitionBy(new UsridPartitioner(10)).saveAsTextFile("/chenm/partition")
  }
}


spark自定义分区及示例代码

标签:

原文地址:http://my.oschina.net/u/877759/blog/505865

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!