- 在cmd中输入spark-shell进入Spark交互模式(前提是已经设置好了Spark环境变量以及path)
“Spark’s primary abstraction is a distributed collection of items called a Dataset”
Spark的主要抽象是Dataset的分布式item集合
- 读取本地文件内容,返回一个Spark会话对象,文件中每一行作为一个item
val textFile =spark.read.textFile(文件地址)
- 调用一些简单的函数对文章内容做一些操作
textFile.count()//计算item个数,也就是文件行数
textFile.first()//返回第一个item内容,也就是第一行的内容
4.一些稍微复杂的操作
- 计算每一行的词个数,并且返回词数最大的行所包含的词的数量
textFile.map(line=>line.split(" ").size).reduce((a,b)=>if(a>b)a else b)
- 计算文章中每个单词出现的数量
val wordCounts=textFile.flatMap(line=>line.split(" ")).groupByKey(identit).count()
wordCounts.collect()
- 使用过滤器得到包含了Spark的行
val linesWithSpark=textFile.filter(line=>line.contains("Spark")
- 将结果保存在缓存中(Spark区别于Mapreduce的重点,Mapreduce将中间结果转化为文件存储在HDFS中),虽然此时数据比较小,存取比较快,但当数据量很大的时候,性能相比于传统的磁盘存储会提升不少。
linesWithSpark.cache()