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
}
}
}
posted @   jsqup  阅读(88)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示