spark用shell命令将文档中单词出现次数按降序排列,并写入到hdfs中

1、启动spark(进入spark的bin目录下,输入:./spark-shell命令)

在这里插入图片描述

2、声明一个变量,通过val first=sc.textFile("file:///home/yaozhen/movie.txt");指令从该文档中获取数据,file指的是当前节点的路径下的文档;(生成Rdd)

3、查询文档中内容的行数,first.count;(注意:文档结束后不要换行,否则会多算一行;另外,在上面写文档路径的时候,file后面需要加“///”,否则该方法无法调用);

4、通过val third=first.flatMap(lines => lines.split("\t"));指令将文档类的内容“拍扁”成一个个单词,然后按照“\t”(制表符)的样式切割(注意:split方法中的参数取决于文档中元素是按照怎样的符号分割的。)

5、可以使用 third.collect;指令查询一下生成的Rdd内容的样式。

6、使用val four=third.map(words => (words,1));方法,将文档中的内容按照(key,value)的方式封装,其中value为1;

7、可以使用 four.collect;指令查询一下当前的Rdd内容的样式;

在这里插入图片描述

8、使用val five=four.reduceByKey(_+_);指令将封装好的map中的同一个key下面的value值进行相加;

9、将action完后的数据的key和value位置互换,使用元组中的val six=five.map(res => (res._2,res._1));方法;

10、使用val eight=six.sortByKey(false);方法,将封装好的map按照key的大小进行降序,(sortByKey()默认为升序,参数传入false则为降序);

11、使用val nine=eight.map(ret => (ret._2,ret._1);方法,将map中的key和value位置互换;

12、使用 nine.saveAsTextFile("hdfs://192.168.88.2:9000/res");方法,将运算后的新数据存入hdfs中(记得一定要启动hdfs),res文件夹不需要自己创建,hdfs会自己创建(上传成功后,spark指令不会报错,直接跳入下一行)。成功后,输入hdfs的地址和端口号即可查询数据是否写入。

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_43365615/article/details/113127299