spark练习--统计xxx大学的各个少数名族的情况

最近,有一份数据,是关于学校的数据,这个里面有所有学生的信息,今天闲来没事,我就想用spark的方式来读取文件,并且来统计这个学校的各个民族的情况,以前我用hadoop中mapReduce来计算,不得不说,又麻烦计算速度又慢
首先,我们先看看这份数据长什么样子?

  

我在这个操作的时候,以为数据都是全的,没想到这个有一行的数据缺了几个,当时在mapReduce,缺了的话,对数据也没影响,还是能照样跑,但是这个不行,spark里面直接报数据越界的异常,所以我就提前判断了一下长度

package cn.wj.spark.day07

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

/**
  * Created by WJ on 2017/1/5.
  */
//要善于解决数据的不匹配的关系
object myXJDX {
  def main(args: Array[String]): Unit = {
    val conf = new SparkConf().setAppName("myXJDX").setMaster("local")
    val sc = new SparkContext(conf)
    val rdd1 = sc.textFile("E://Test/xjdx.txt").map(line => {
      val fields = line.split(",")
      if (fields.length >= 10) {
        val mz = line.split(",")(10)
        (mz, 1)
      }else{
        (1,1)
      }
    })
    var rdd2 = rdd1.reduceByKey(_ + _)
    println(rdd2.collect().toBuffer)
  }
}

很简单的一段代码,不过有些时候越是简单的东西,就需要多动手

  

原文地址:https://www.cnblogs.com/wnbahmbb/p/6254100.html