其他分享
首页 > 其他分享> > sparkcore案例四:统计每个省份的用户访问量

sparkcore案例四:统计每个省份的用户访问量

作者:互联网

/**
 * 统计每个省份的用户访问量,最终要求将不同省份用户访问量存放到不同的分区中 分区存放规则如下
 * 省份是以包含  山    0
 * 如果省份包含  海    1
 * 其他省份           2
 */
package sparkcorerddexample

import org.apache.spark.rdd.RDD
import org.apache.spark.{Partitioner, SparkConf, SparkContext}
/**
 * 统计每个省份的用户访问量,最终要求将不同省份用户访问量存放到不同的分区中 分区存放规则如下
 * 省份是以包含  山    0
 * 如果省份包含  海    1
 * 其他省份           2
 */
object A4ProvinceVisit {
  def main(args: Array[String]): Unit = {
    val sparkConf:SparkConf = new SparkConf().setAppName("demo02").setMaster("local[3]")
    val sc:SparkContext = new SparkContext(sparkConf)

    val value: RDD[String] = sc.textFile("hdfs://node1:9000/dc")
    val map = value.map((line: String) => {
      val array = line.split(" ")
      val province: String = array(array.length - 4)
      (province, 1L)
    })
    val rdd = map.reduceByKey(new ProvincePartitioner(), _ + _)
    println(rdd.getNumPartitions)
    rdd.saveAsTextFile("hdfs://node1:9000/province")
  }
}

class ProvincePartitioner extends Partitioner {
  override def numPartitions: Int = 3

  override def getPartition(key: Any): Int = {
    val province = key.toString
    if (province.contains("山")) {
      0
    } else if (province.contains("海")) {
      1
    } else {
      2
    }
  }
}

标签:province,String,val,sparkcore,rdd,访问量,省份
来源: https://www.cnblogs.com/jsqup/p/16630309.html