本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
访问 Spark Shell
Spark 外壳基于 Scala REPL (Read-Eval-Print-Loop)。 它允许您以交互方式创建 Spark 程序并将工作提交给框架。您可以通过连接主节点SSH并调用spark-shell
来访问 Spark 外壳。有关连接到主节点的更多信息,请参阅 Amazon EMR 管理指南SSH中的使用连接到主节点。以下示例使用存储在 Amazon S3 中的 Apache HTTP 服务器访问日志。
注意
这些示例中的存储桶对能够访问美国东部(弗吉尼亚州北部)的客户端可用。
默认情况下,Spark 外壳会创建自己的名为的SparkContextsc
。如果需要在中使用此上下文,则可以使用该上下文REPL。sqlContext 也有外壳可供选择,它是 HiveContext
例 使用 Spark Shell 统计存储在 Amazon S3 中的某个文件中的某个字符串的出现次数
本示例使用 sc
读取存储在 Amazon S3 中的文本文件。
scala> sc res0: org.apache.spark.SparkContext = org.apache.spark.SparkContext@404721db scala> val textFile = sc.textFile("s3://elasticmapreduce/samples/hive-ads/tables/impressions/dt=2009-04-13-08-05/ec2-0-51-75-39.amazon.com-2009-04-13-08-05.log")
Spark 创建 textFile 和关联的数据结构
scala> val linesWithCartoonNetwork = textFile.filter(line => line.contains("cartoonnetwork.com")).count() linesWithCartoonNetwork: org.apache.spark.rdd.RDD[String] = MapPartitionsRDD[2] at filter at <console>:23 <snip> <Spark program runs> scala> linesWithCartoonNetwork res2: Long = 9
例 使用基于 Python 的 Spark Shell 统计存储在 Amazon S3 中的某个文件中的某个字符串的出现次数
Spark 还包含一个基于 Python 的 Shell pyspark
,您可以用它来设计以 Python 编写的 Spark 程序的原型。就像在主节点pyspark
上调用一样;它也有相同的SparkContextspark-shell
>>> sc <pyspark.context.SparkContext object at 0x7fe7e659fa50> >>> textfile = sc.textFile("s3://elasticmapreduce/samples/hive-ads/tables/impressions/dt=2009-04-13-08-05/ec2-0-51-75-39.amazon.com-2009-04-13-08-05.log")
Spark 创建 textFile 和关联的数据结构
>>> linesWithCartoonNetwork = textfile.filter(lambda line: "cartoonnetwork.com" in line).count() 15/06/04 17:12:22 INFO lzo.GPLNativeCodeLoader: Loaded native gpl library from the embedded binaries 15/06/04 17:12:22 INFO lzo.LzoCodec: Successfully loaded & initialized native-lzo library [hadoop-lzo rev EXAMPLE] 15/06/04 17:12:23 INFO fs.EmrFileSystem: Consistency disabled, using com.amazon.ws.emr.hadoop.fs.s3n.S3NativeFileSystem as filesystem implementation <snip> <Spark program continues> >>> linesWithCartoonNetwork 9