Spark的Shell提供了一种学习API的简单方法,以及一种交互式分析数据的强大工具,它可以在Scala、R或Python中使用。本节主要介绍如何通过Shell的方式来使用Spark。
Scala的Shell是Spark安装包中自带的,因此可以通过在Spark中运行以下命令来直接启动Scala的Shell:
spark-shell
Spark的核心抽象是Dataset分布式数据集合。Dataset可以从Hadoop支持的输入格式(如HDFS文件)创建,也可以通过转换现有的数据集来创建。例如,从Spark源目录的README.md文件的文本中创建一个新的Dataset:
scala> val textFile = spark.read.textFile("README.md") // 从文件创建一个Dataset textFile: org.apache.spark.sql.Dataset[String] = [value: string]
可以通过调用一些操作直接从Dataset中获取值,也可以转换Dataset以获取新值:
scala> textFile.count() // Dataset中的项目数 res0: Long = 125 // 不同的Spark版本,README.md可能会变化,因此输出可能不同 scala> textFile.first() // Dataset中的第一个项目 res1: String = # Apache Spark
现在将这个Dataset转换为一个新的Dataset。调用filter来返回一个新的Dataset,其中包含文件中项目的子集:
// 包含Spark字样的行 scala> val linesWithSpark = textFile.filter(line => line.contains("Spark")) linesWithSpark: org.apache.spark.sql.Dataset[String] = [value: string]
可以将转换(transformation)和行动(action)组合在一起使用:
// 包含Spark字样的行数 scala> textFile.filter(line => line.contains("Spark")).count() res3: Long = 20
如果要使用Python的Shell,执行下面的命令:
pyspark
如果要使用R的Shell,执行下面的命令:
sparkR shell
各个语言的使用方式各不相同,请自行查阅相关文档,这里不再详细展开。如无特殊说明,本书后续使用Shell的示例,主要是指Scala的Shell。