班级ID 姓名 年龄 性别 科目 成绩
12 张三 25 男 chinese 50
12 张三 25 男 math 60
12 张三 25 男 english 70
12 李四 20 男 chinese 50
12 李四 20 男 math 50
12 李四 20 男 english 50
12 王芳 19 女 chinese 70
12 王芳 19 女 math 70
12 王芳 19 女 english 70
13 张大三 25 男 chinese 60
13 张大三 25 男 math 60
13 张大三 25 男 english 70
13 李大四 20 男 chinese 50
13 李大四 20 男 math 60
13 李大四 20 男 english 50
13 王小芳 19 女 chinese 70
13 王小芳 19 女 math 80
13 王小芳 19 女 english 70
hdfs dfs -put sparkwork.txt /data/
scala> sc.textFile("/data/sparkwork.txt").collect.drop(1).map(_.split("\\s+")).groupBy(x=>x(1)).size
res6: Int = 6
scala> sc.textFile("/data/sparkwork.txt").collect.drop(1).map(_.split("\\s+")).filter(x=>x(2).toInt<20).groupBy(x=>x(1)).size
res10: Int = 2
scala> sc.textFile("/data/sparkwork.txt").collect.drop(1).map(_.split("\\s+")).filter(x=>x(2).toInt==20).groupBy(x=>x(1)).size
res11: Int = 2
scala> sc.textFile("/data/sparkwork.txt").collect.drop(1).map(_.split("\\s+")).filter(x=>x(2).toInt>20).groupBy(x=>x(1)).size
res12: Int = 2
scala> sc.textFile("/data/sparkwork.txt").collect.drop(1).map(_.split("\\s+")).filter(x=>x(3)=="男").groupBy(x=>x(1)).size
res15: Int = 4
scala> sc.textFile("/data/sparkwork.txt").collect.drop(1).map(_.split("\\s+")).filter(x=>x(3)=="女").groupBy(x=>x(1)).size
res16: Int = 2
scala> sc.textFile("/data/sparkwork.txt").collect.drop(1).map(_.split("\\s+")).filter(x=>x(0)=="12").groupBy(x=>x(1)).size
res19: Int = 3
scala> sc.textFile("/data/sparkwork.txt").collect.drop(1).map(_.split("\\s+")).filter(x=>x(0)=="13").groupBy(x=>x(1)).size
res20: Int = 3
scala> val x = sc.textFile("/data/sparkwork.txt").collect.drop(1).map(_.split("\\s+")).filter(x=>x(4)=="chinese").map(x=>x(5).toInt)
x: Array[Int] = Array(50, 50, 70, 60, 50, 70)
scala> x.sum/x.size
res54: Int = 58
scala> val x = sc.textFile("/data/sparkwork.txt").collect.drop(1).map(_.split("\\s+")).filter(x=>x(4)=="math").map(x=>x(5).toInt)
x: Array[Int] = Array(60, 50, 70, 60, 60, 80)
scala> x.sum/x.size
res55: Int = 63
scala> val x = sc.textFile("/data/sparkwork.txt").collect.drop(1).map(_.split("\\s+")).filter(x=>x(4)=="english").map(x=>x(5).toInt)
x: Array[Int] = Array(70, 50, 70, 70, 50, 70)
scala> x.sum/x.size
res56: Int = 63
scala> sc.textFile("/data/sparkwork.txt").collect.drop(1).map(_.split("\\s+")).map(x=>(x(1),x(5))).groupBy(_._1).map(x=>(x._1,x._2.map(x=>x._2.toInt).sum/x._2.size))
res20: scala.collection.immutable.Map[String,Int] = Map(李大四 -> 53, 王芳 -> 70, 张大三 -> 63, 李四 -> 50, 王小芳 -> 73, 张三 -> 60)
scala> val x = sc.textFile("/data/sparkwork.txt").collect.drop(1).map(_.split("\\s+")).filter(x=>x(0)=="12").groupBy(x=>x(1))
x: scala.collection.immutable.Map[String,Array[Array[String]]] = Map(张三 -> Array(Array(12, 张三, 25, 男, chinese, 50), Array(12, 张三, 25, 男, math, 60), Array(12, 张三, 25, 男, english, 70)), 王芳 -> Array(Array(12, 王芳, 19, 女, chinese, 70), Array(12, 王芳, 19, 女, math, 70), Array(12, 王芳, 19, 女, english, 70)), 李四 -> Array(Array(12, 李四, 20, 男, chinese, 50), Array(12, 李四, 20, 男, math, 50), Array(12, 李四, 20, 男, english, 50)))
scala> x.flatMap(x=>(x._2.map(x=>x(5).toInt))).sum/x.size
res29: Int = 180
scala> val x = sc.textFile("/data/sparkwork.txt").collect.drop(1).map(_.split("\\s+")).filter(x=>x(0)=="12" && x(3)=="男").groupBy(x=>x(1))
x: scala.collection.immutable.Map[String,Array[Array[String]]] = Map(张三 -> Array(Array(12, 张三, 25, 男, chinese, 50), Array(12, 张三, 25, 男, math, 60), Array(12, 张三, 25, 男, english, 70)), 李四 -> Array(Array(12, 李四, 20, 男, chinese, 50), Array(12, 李四, 20, 男, math, 50), Array(12, 李四, 20, 男, english, 50)))
scala> x.flatMap(x=>(x._2.map(x=>x(5).toInt))).sum/x.size
res30: Int = 165
scala> val x = sc.textFile("/data/sparkwork.txt").collect.drop(1).map(_.split("\\s+")).filter(x=>x(0)=="12" && x(3)=="女").groupBy(x=>x(1))
x: scala.collection.immutable.Map[String,Array[Array[String]]] = Map(王芳 -> Array(Array(12, 王芳, 19, 女, chinese, 70), Array(12, 王芳, 19, 女, math, 70), Array(12, 王芳, 19, 女, english, 70)))
scala> x.flatMap(x=>(x._2.map(x=>x(5).toInt))).sum/x.size
res31: Int = 210
scala> sc.textFile("/data/sparkwork.txt").collect.drop(1).map(_.split("\\s+")).filter(x=>x(4)=="chinese").map(x=>x(5).toInt).max
res32: Int = 70
scala> sc.textFile("/data/sparkwork.txt").collect.drop(1).map(_.split("\\s+")).filter(x=>x(4)=="chinese" && x(0)=="12").map(x=>x(5).toInt).min
res33: Int = 50
scala> sc.textFile("/data/sparkwork.txt").collect.drop(1).map(_.split("\\s+")).filter(x=>x(4)=="math" && x(0)=="13").map(x=>x(5).toInt).max
res34: Int = 80
scala> sc.textFile("/data/sparkwork.txt").collect.drop(1).map(_.split("\\s+")).filter(x=>x(3)=="女" && x(0)=="12").map(x=>(x(1),x(5))).groupBy(_._1).filter(x=>x._2.map(x=>x._2.toInt).sum>150).size
res40: Int = 1
scala> sc.textFile("/data/customers.csv").map(_.split(",")).collect.map(x=>(x(1),x(2))).groupBy(_._2).map(x=>(x._1,x._2.size)).toList.sortBy(-_._2).take(5)
res34: List[(String, Int)] = List(("Smith",4626), ("Johnson",76), ("Williams",69), ("Jones",65), ("Brown",62))
scala> sc.textFile("/data/customers.csv").map(_.split(",")).collect.map(x=>(x(1),x(2))).groupBy(_._1).map(x=>(x._1,x._2.size)).toList.sortBy(-_._2).take(10)
res35: List[(String, Int)] = List(("Mary",4741), ("James",135), ("John",118), ("Robert",117), ("David",114), ("Michael",111), ("William",98), ("Richard",76), ("Joseph",72), ("Elizabeth",71))
csv文件格式如下: