最近,有一份数据,是关于学校的数据,这个里面有所有学生的信息,今天闲来没事,我就想用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) } }
很简单的一段代码,不过有些时候越是简单的东西,就需要多动手