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
~~~