[spark-01] 小试牛刀:用spark shell一句话实现简单的wordcount
1、准备数据
961M -rw-r--r--. 1 root root 644M Nov 2 07:43 wcdata.txt
利用linux:
[[email protected] ~]# echo hello kerry tom jerry cat big data helo hadoop keery kerry jerry dog tom >> 1.txt
#先增加到约1M或10M[[email protected] ~]# for i in {1..10000}; do cat 1.txt>>words.txt;done
#再增加到1G[[email protected] ~]# for i in {1..100}; do cat words.txt>>wcdata.txt;done
2、创建HDFS数据文件夹并上传文件
[[email protected] ~]# hdfs dfs -mkdir /data
[[email protected] ~]# hdfs dfs -put wcdata.txt /data
3、启动spark shell
启动时必须指定--master及地址它才会提交到集群中运行
./spark-shell --master spark://spark01:7077
也可以根据任务的运算量手工指定内存及CPU资源:(多个master时加,号分隔)
如下:指定spark01、spark02运行,内存8G,CPU为16核
./spark-shell --master spark://spark01:7077,spark02:7077 --executor-memory 8g --total-executor-cores 16
4、开始任务
sc.textFile("hdfs://spark01:8020/data").flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_).sortBy(_._2,false).saveAsTextFile("hdfs://spark01:8020/out-wc")
(注意:HDFS的端口要和hadoop中的端口一致,不一定是8020,具体看配置)
5、查看结果
[[email protected] ~]# hdfs dfs -ls /out-wc
Found 4 items
-rw-r--r-- 3 root supergroup 0 2020-11-02 08:00 /out-wc/_SUCCESS
-rw-r--r-- 3 root supergroup 0 2020-11-02 08:00 /out-wc/part-00000
-rw-r--r-- 3 root supergroup 49 2020-11-02 08:00 /out-wc/part-00001
-rw-r--r-- 3 root supergroup 121 2020-11-02 08:00 /out-wc/part-00002