在Spark 2.0之前,Spark的主要编程接口是弹性分布式数据集(RDD)。在Spark 2.0之后,RDD被数据集取代,数据集类似于RDD一样强类型,但在底层有更丰富的优化。
Spark的shell用来学习API
启动命令:
./bin/spark-shell
Spark的主要抽象是一个名为Dataset的分布式项目集合。可以从HDFS或通过转换其他数据集来创建数据集。
例如:让我们从README文件的文本中创建一个新的数据集
scala> val textFile = spark.read.textFile("README.md")
textFile: org.apache.spark.sql.Dataset[String] = [value: string]
可以通过调用某些操作直接从Dataset获取值,或者转换数据集以获取新值。
scala> textFile.count() // 这个Dataset的总数
res0: Long = 126 // May be different from yours as README.md will change over time, similar to other outputs
scala> textFile.first() // Dataset的first item
res1: String = # Apache Spark
将这个数据集转换为新数据集。调用filter
返回一个新的数据集。
scala> val linesWithSpark = textFile.filter(line => line.contains("Spark"))
linesWithSpark: org.apache.spark.sql.Dataset[String] = [value: string]
可以将转换和行动联系在一起:
scala> textFile.filter(line => line.contains("Spark")).count() // How many lines contain "Spark"?
res3: Long = 15