Spark shell提供了一个简单方式去学习API,它也是一个交互式分析数据的强大工具。 你既可以使用Scala(运行在JVM之上,所以可以使用众多的Java库),也可以使用Python。运行Spark文件夹下的的命令:
~~~
./bin/spark-shell
~~~
Spark最主要的一个抽象出来的概念就是分布式的数据集合, 也就是弹性分布式数据集Resilient Distributed Dataset (RDD). RDD可以从Hadoop InputFormats (比如HDFS文件)创建, 也可以通过其它RDD转换(transforming)得到。 让我们从Spark源代码文件夹下的README文件创建一个RDD:
~~~
scala> val textFile = sc.textFile("README.md")
textFile: spark.RDD[String] = spark.MappedRDD@2ee9b6e3
~~~
RDD包含[action](https://spark.apache.org/docs/latest/programming-guide.html#actions),可以返回数据, 也包含[transformation](https://spark.apache.org/docs/latest/programming-guide.html#transformations),返回新的RDD的指针。 先看一些action的例子:
~~~
scala> textFile.count() // 此RDD中的item的数量
res0: Long = 126
scala> textFile.first() // 此RDD第一个item
res1: String = # Apache Spark
~~~
现在再看一个转换的例子。我们使用`filter`返回一个新的RDD, 新的RDD是文件中item的一个子集。
~~~
scala> val linesWithSpark = textFile.filter(line => line.contains("Spark"))
linesWithSpark: spark.RDD[String] = spark.FilteredRDD@7dd4af09
~~~
将transformation和action串起来:
~~~
scala> textFile.filter(line => line.contains("Spark")).count() // How many lines contain "Spark"?
res3: Long = 15
~~~