goods.txt
13059 2019-12-23 06:12:29 15281 2019-12-23 06:12:29 14905 2019-12-23 06:12:29 14622 2019-12-23 06:12:29 19817 2019-12-23 06:12:29 13009 2019-12-23 06:12:29 14572 2019-12-23 06:12:29 11081 2019-12-23 06:12:29 17228 2019-12-23 06:12:29 16931 2019-12-23 06:12:29 18945 2019-12-23 06:12:29 18013 2019-12-23 06:12:29 11879 2019-12-23 06:12:29 17429 2019-12-23 06:12:29 17570 2019-12-23 06:12:29 12141 2019-12-23 06:12:29 11758 2019-12-23 06:12:29 15326 2019-12-23 06:12:29 14718 2019-12-23 06:12:29 13607 2019-12-23 06:12:29 16815 2019-12-23 06:12:29 11954 2019-12-23 06:12:29 12841 2019-12-23 06:12:29 18054 2019-12-23 06:12:29 12340 2019-12-23 06:12:29 17825 2019-12-23 06:12:29 10948 2019-12-23 06:12:29 17236 2019-12-23 06:12:29 14181 2019-12-23 06:12:29 16364 2019-12-23 06:12:29 10167 2019-12-23 06:12:29 15274 2019-12-23 06:12:29 15835 2019-12-23 06:12:29 15301 2019-12-23 06:12:29 10411 2019-12-23 06:12:29 15269 2019-12-23 06:12:29 19951 2019-12-23 06:12:29 13363 2019-12-23 06:12:29 16532 2019-12-23 06:12:29 17222 2019-12-23 06:12:29 14913 2019-12-23 06:12:29 18991 2019-12-23 06:12:29 15675 2019-12-23 06:12:29 16375 2019-12-23 06:12:29 12181 2019-12-23 06:12:29 12846 2019-12-23 06:12:29 19642 2019-12-23 06:12:29 17573 2019-12-23 06:12:29 16103 2019-12-23 06:12:29 18154 2019-12-23 06:12:29 11089 2019-12-23 06:12:29 14158 2019-12-23 06:12:29 18991 2019-12-23 06:12:29 14799 2019-12-23 06:12:29 12870 2019-12-23 06:12:29 12153 2019-12-23 06:12:29 16096 2019-12-23 06:12:29 16640 2019-12-23 06:12:29 18872 2019-12-23 06:12:29 10108 2019-12-23 06:12:29 15066 2019-12-23 06:12:29 11491 2019-12-23 06:12:29 18612 2019-12-23 06:12:29 18973 2019-12-23 06:12:29 15727 2019-12-23 06:12:29 13312 2019-12-23 06:12:29 19056 2019-12-23 06:12:29 14585 2019-12-23 06:12:29 10003 2019-12-23 06:12:29 15521 2019-12-23 06:12:29 12853 2019-12-23 06:12:29 15755 2019-12-23 06:12:29 11276 2019-12-23 06:12:29 14950 2019-12-23 06:12:29 18219 2019-12-23 06:12:29
wc.scala
import org.apache.spark.SparkConf import org.apache.spark.SparkContext object wc { def main(args: Array[String]): Unit = { //指定为root用户 System.setProperty("HADOOP_USER_NAME", "root") //获取conf文件 val conf = new SparkConf() //项目名 .setAppName("wc") //允许本地运行 .setMaster("local") //获取上下文 val sc = new SparkContext(conf) //hdfs上获取源文件 //14816 2019-12-23 06:12:30 //14816 2019-12-23 06:12:30 //11077 2019-12-23 06:12:30 val lines = sc.textFile("hdfs://10.0.0.20:8020/goods.txt") //以\t进行拆分,获取第一个索引 //14816 //14816 //11077 val words = lines.map(_.split("\t")(0)) //每个索引末尾加1 //(14816,1) //(14816,1) //(11077,1) val tulp = words.map((_,1)) //key相同的进行累加 //(14816,2) //(11077,1) val re = tulp.reduceByKey(_+_) //将k和v调换位置,再将k降序排序"false"再调换k和v val jx = re.map(x => (x._2,x._1)).sortByKey(false ).map(x => (x._2,x._1)) //转为字符串以\t进行分割 //14816 2 //11077 1 val str = jx.map( x=> {x._1 + "\t" + x._2}) //结果输出到hdfs上 str.saveAsTextFile("hdfs://10.0.0.20:8020/sp/wc2") } }
结果