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
}
}
}
本文来自博客园,作者:jsqup,转载请注明原文链接:https://www.cnblogs.com/jsqup/p/16630309.html