依次是:数据id号 标题 链接 地区 地点 地铁站 人数 日期 对应的字段依次是: id title link district bizcircle tagList onsale validdate 以下是租房信息的数据结构:数据之间使用tab进行分割,数据在housedata.txt文件中。(这里为一部分数据)
1111000004310 什坊院甲3号院 https://bj.lianjia.com/xiaoqu/1111000004310/ 海淀 田村 0 2017/11/29 15:47 1111027373682 大慧寺6号院 https://bj.lianjia.com/xiaoqu/1111027373682/ 海淀 白石桥 2 2017/11/29 15:39 1111027373683 东花市北里东区 https://bj.lianjia.com/xiaoqu/1111027373683/ 东城 东花市 近地铁1号线王府井站 0 2017/11/29 14:57 1111027373684 东花市北里西区 https://bj.lianjia.com/xiaoqu/1111027373684/ 东城 东花市 近地铁7号线广渠门内站 7 2017/11/29 14:56 1111027373685 东花市北里中区 https://bj.lianjia.com/xiaoqu/1111027373685/ 东城 东花市 近地铁2号线朝阳门站 9 2017/11/29 14:56 1111027373686 东恒时代二期 https://bj.lianjia.com/xiaoqu/1111027373686/ 朝阳 四惠 近地铁1号线四惠站 23 2017/11/29 13:57 1111027373688 东花市大街 https://bj.lianjia.com/xiaoqu/1111027373688/ 东城 东花市 近地铁7号线广渠门内站 0 2017/11/29 15:11 1111027373689 东花市大街2号院 https://bj.lianjia.com/xiaoqu/1111027373689/ 东城 东花市 近地铁7号线广渠门内站 1 2017/11/29 15:01 1111027373690 东恒时代三期 https://bj.lianjia.com/xiaoqu/1111027373690/ 朝阳 十里堡 近地铁1号线四惠站 23 2017/11/29 13:58 1111027373691 东恒时代一期 https://bj.lianjia.com/xiaoqu/1111027373691/ 朝阳 四惠 近地铁1号线四惠站 9 2017/11/29 13:59
将数据进行清洗,缺失数据的全部不要
并进行 RDD 查询 完成以下操作
成功代码:
package Spar import org.apache.spark.rdd.RDD import org.apache.spark.{Accumulator, SparkConf, SparkContext} /** * Created by 一个蔡狗 on 2020/4/17. * 依次是:数据id号 标题 链接 地区 地点 地铁站 人数 日期 RDD 方式 */ object demo01 { def main(args: Array[String]): Unit = { // 实例化一个配置对象 var conf = new SparkConf().setAppName("demo01").setMaster("local[*]") // 实例化SparkContext对象 var sc = new SparkContext(conf) sc.setLogLevel("WARN") //读取文件 var rdd: RDD[String] = sc.textFile("E:\4.8号练习题32道\housedata.txt") /** * 数据 */ val rdd2: RDD[Array[String]] = rdd.filter(_.split("\t")(5) != "").map(x => x.split("\t")) /** * 清洗 */ // 2、计算出东花市北里有多少条信息 val value2: RDD[Array[String]] = rdd2.filter(x => if (x(1).toString.contains("东花市北里")) true else false) println("2.东花市北里有" + value2.count() + "条信息") // 3、计算出住在朝阳区的所有人数 val value3 = rdd2.filter(x => if (x(3).toString.equals("朝阳")) true else false) /** * 累加器 count3 */ var count3: Accumulator[Int] = sc.accumulator(0) value3.foreach(x => { count3 += x(6).toInt }) println(s"3.朝阳区的所有人数为${count3}") // 4、计算出住在朝阳区的人数和住在西城区的人数哪个区的多,多多少? val value41 = rdd2.filter(x => if (x(3).toString.equals("朝阳")) true else false) var count41: Accumulator[Int] = sc.accumulator(0) value41.foreach(x => { count41 += x(6).toInt }) val value42 = rdd2.filter(x => if (x(3).toString.equals("西城")) true else false) var count42: Accumulator[Int] = sc.accumulator(0) value42.foreach(x => { count42 += x(6).toInt }) def max4(x: Int, y: Int): Unit = { if (x > y) println(s"4.朝阳比西城人多出${x - y}") else println(s"4.西城比朝阳人多出${y - x}") } max4(count41.value, count42.value) // 5、计算出标题中含有胡同的所有租户有多少人 val value5 = rdd2.filter(x => if (x(1).toString.contains("胡同")) true else false) var count5: Accumulator[Int] = sc.accumulator(0) value5.foreach(x => { count5 += x(6).toInt }) println("5.标题中含有胡同的人数为" + count5.value) // 6、计算出地铁1号线的租户有多少人? val value6 = rdd2.filter(x => if (x(5).toString.contains("1号")) true else false) var count6: Accumulator[Int] = sc.accumulator(0) value6.foreach(x => { count6 += x(6).toInt }) println("6.地铁1号线的人数为" + count6.value) // 7、计算出东城区王府井站有多少人? val value7 = rdd2.filter(x => if (x(3).toString.equals("东城") && x(5).toString.contains("王府井站")) true else false) var count7: Accumulator[Int] = sc.accumulator(0) value7.foreach(x => { count7 += x(6).toInt }) println("7.东城区王府井站的人数为" + count7.value) // 8、计算出所有地区的人数有多少? var count8: Accumulator[Int] = sc.accumulator(0) rdd2.foreach(x => { count8 += x(6).toInt }) println("8.所有地区的人数为" + count8.value) // 9、计算出各个地区的平均人数是多少? var count9: Accumulator[Int] = sc.accumulator(0) //求出每个地区的人数 val rdd9: RDD[(String, Iterable[Int])] = rdd2.map(x => (x(3), x(6).toInt)).groupByKey() rdd9.foreach(x => { count9 += x._2.sum }) println("9.各个地区的平均人数是: " + count9.toString().toInt / rdd9.count()) // 10、计算出地铁15号线比地铁1号线的人数多多少? var count101: Accumulator[Int] = sc.accumulator(0) var count102: Accumulator[Int] = sc.accumulator(0) rdd2.foreach(x => { if (x(5).startsWith("近地铁15号")) { count101 += x(6).toInt } else if (x(5).startsWith("近地铁1号")) { count102 += x(6).toInt } }) println(s"10. 15号线比1号线多: ${count101.toString().toInt - count102.toString().toInt}") // 11、计算出人数最多的前三个地区 val rdd11: RDD[(String, Int)] = rdd2.map(x => (x(3), x(6).toInt)).reduceByKey(_ + _) val resultSort: RDD[(String, Int)] = rdd11.sortBy(_._2, false) val finalResultSort: Array[(String, Int)] = resultSort.take(3) println("11.计算出人数最多的前三个地区") finalResultSort.foreach(println) // 12、计算出13号线的哪个站下的人最多? val rdd12 = rdd2.filter(x => if (x(5).toString.contains("13号")) true else false) val value12: RDD[(String, Int)] = rdd12.map(x => (x(5), x(6).toInt)).reduceByKey(_ + _) val resultSort12: RDD[(String, Int)] = value12.sortBy(_._2, false) val finalResultSort12: Array[(String, Int)] = resultSort12.take(1) println("12. 13号线的人数最多的站" + finalResultSort12(0)) // 13、计算出望京地点14号线和15号线的下车总人数是多少? val rdd13 = rdd2.filter(x => if (x(4).toString.contains("望京")&&(x(5).toString.contains("14号")||x(5).toString.contains("15号"))) true else false) var count13: Accumulator[Int] = sc.accumulator(0) rdd13.foreach(x=>{ count13+=x(6).toInt }) println(" 13、计算出望京地点14号线和15号线的下车总人数为"+count13.value) // 14、计算出望京地点14号线占所有14号地铁站的人数比? val rdd141 = rdd2.filter(x => if ((x(5).toString.contains("14号"))) true else false) var count141: Accumulator[Int] = sc.accumulator(0) rdd141.foreach(x=>{ count141+=x(6).toInt }) val rdd142 = rdd2.filter(x => if (x(4).toString.contains("望京")&&(x(5).toString.contains("14号"))) true else false) var count142: Accumulator[Int] = sc.accumulator(0) rdd142.foreach(x=>{ count142+=x(6).toInt }) val d: Double = count142.value.toDouble / count141.value.toDouble val str: String = d.formatted("%.2f") println("14. 望京地点14号线占所有14号地铁站的人数比是"+str ) // 15、计算出亚运村地点的人数和广渠门的人数总和? val rdd15 = rdd2.filter(x => if (x(4).toString.contains("亚运村")||(x(4).toString.contains("广渠门"))) true else false) var count15: Accumulator[Int] = sc.accumulator(0) rdd15.foreach(x=>{ count15+=x(6).toInt }) println("15.亚运村地点的人数和广渠门的人数总和为"+count15.value) //依次是:数据id号 标题 链接 地区 地点 地铁站 人数 日期 // 16、计算出每个地区的地点人数最多的前3名? val rdd16: RDD[(String, Int)] = rdd2.map(x => ((x(3),x(6).toInt))) val groups: RDD[(String, Iterable[Int])] = rdd16.groupByKey() val groupedTop3: RDD[(String, List[Int])] = groups.map(grouped => { (grouped._1, grouped._2.toList.sortWith(_ > _).take(3)) }) println("16、计算出每个地区的地点人数最多的前3名") groupedTop3.collect().foreach(x=>{ println(x._1+":") x._2.foreach { println } }) sc.stop() } }
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算