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的地址和端口号即可查询数据是否写入。