访问 Spark Shell - Amazon EMR

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

访问 Spark Shell

Spark Shell 基于 Scala REPL (Read-Eval-Print-Loop)。它让您能够以交互方式创建 Spark 程序并将工作提交到框架。您可以通过 SSH 连接主节点并调用 spark-shell,从而访问 Spark Shell。有关如何连接到主节点的更多信息,请参阅《Amazon EMR 管理指南》中的使用 SSH 连接到主节点。以下示例使用存储在 Amazon S3 中的 Apache HTTP Server 访问日志。

注意

这些示例中的存储桶对能够访问美国东部(弗吉尼亚州北部)的客户端可用。

默认情况下,Spark 外壳会创建自己的名为的SparkContext对象sc。如果 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.rproxy.govskope.ca-2009-04-13-08-05.log")

Spark 创建 textFile 及关联的数据结构。然后,示例会统计此日志文件中包含字符串“cartoonnetwork.com”的行数:

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上调用一样;它也有相同的SparkContext对象。spark-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.rproxy.govskope.ca-2009-04-13-08-05.log")

Spark 创建 textFile 及关联的数据结构。然后,示例会统计此日志文件中包含字符串“cartoonnetwork.com”的行数。

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