spark是一个用来快速且通用的集群计算平台,使用scala开发,运行于jvm之上。Spark基于内存计算,提高了在大数据环境下数据处理的实时性,同时保证了高容错性和高可伸缩性。Spark适用于各种各样原先需要多种不同的分布式平台实现的场景,包括批处理、迭代计算、交互式查询、流处理等。
前提:安装jdk(不再赘述)
下载spark-2.4.7-bin-hadoop2.7.gz
mv spark-2.4.7-bin-hadoop2.7.gz /opt
cd /opt
tar -zxvf spark-2.4.7-bin-hadoop2.7.gz
mv spark-2.4.7-bin-hadoop2.7 spark
cd spark
sbin/start-all.sh
jps -l
发现多出来spark的worker和master,分别代表工作节点和主节点 。
我们可以通过http://ip:8080端口查看master运行状况:
启动spark
bin/spark-shell --master spark://localhost:7077
下面简单介绍它的基本使用:对文本内容的单词统计
scala> val rdd = sc.textFile("/opt/spark/bin/spark-shell")
scala> val wordmap = rdd.flatMap(_.split(" ")).map(x=>(x,1))
scala> val wordreduce = wordmap.reduceByKey(_+_)
scala> wordreduce.take(10)
1.首先通过SparkContext(Spark在启动的时候自动创建一个SparkContext对象,叫做sc的变量)的textFile()方法读取文件
2.然后使用split()方法按照空格进行分词,之后又通过flatMap()方法对处理后的单词进行展平,展平之后使用map(x=>(x,1))对每个单词计数1
3.reduceByKey(_+_)根据单词进行技术,这个过程是一个Shuffle过程
4.使用take(10)方法获取前面10个单词的统计结果
如果想看到单词出现次数前10的内容:
scala> var wordsort = wordreduce.map(x=>(x._2,x._1)).sortByKey(false).map(x=>(x._2,x._1))
scala> wordsort.take(10)
1.使用map(x=>(x._2,x._1))对单词统计结果的键和值进行互换,然后通过sortByKey(false)降序排序,然后map(x=>(x._2,x._1))将键和值互换
4.使用take(10)方法获取前面10个单词的统计结果
原文:https://www.cnblogs.com/wwjj4811/p/14389768.html