

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Spark シェルにアクセスする
<a name="emr-spark-shell"></a>

Spark シェルは Scala REPL (Read-Eval-Print-Loop) をベースにしています。このシェルを使用すると、Spark プログラムをインタラクティブに作成し、作業をフレームワークに送信できます。Spark シェルには、SSH を使用してプライマリノードに接続し、`spark-shell` を呼び出すことでアクセスできます。プライマリノードへの接続の詳細については、「*Amazon EMR 管理ガイド*」の「[Connect to the primary node using SSH](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-connect-master-node-ssh.html)」を参照してください。次の例では、Amazon S3 に格納された Apache HTTP Server アクセスログを使用します。

**注記**  
これらの例にあるバケットは、米国東部 (バージニア北部) にアクセスできるクライアントが使用できます。

 デフォルトでは、Spark シェルによって `sc` と呼ばれる独自の [SparkContext](https://spark.apache.org/docs/latest/api/scala/org/apache/spark/SparkContext.html) オブジェクトが作成されます。REPL 内で必要な場合は、このコンテキストを使用できます。sqlContext はシェルでも使用でき、[HiveContext](https://spark.apache.org/docs/latest/api/scala/index.html#org.apache.spark.sql.hive.HiveContext) です。

**Example Spark を使用して Amazon S3 に格納されたファイルにおける文字列の出現回数をカウントする**  
この例では、Amazon S3 に保存されているテキスト ファイルを読み取るために `sc` を使用します。  

```
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 と関連付けられた[データ構造](https://spark.apache.org/docs/latest/programming-guide.html#resilient-distributed-datasets-rdds)を作成します。次に、この例ではログファイル内の文字列 "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
```

**Example Python ベースの Spark シェル使用して Amazon S3 に格納されたファイルにおける文字列の出現回数をカウントする**  
Spark には、Python ベースのシェルである `pyspark` も用意されており、Python で記述された Spark プログラムのプロトタイプを作成するために使用できます。`spark-shell` と同様、プライマリノードで `pyspark` を呼び出します。これにも、[SparkContext](https://spark.apache.org/docs/latest/api/python/reference/api/pyspark.SparkContext.html#pyspark.SparkContext) オブジェクトがあります。  

```
>>> 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 と関連付けられた[データ構造](https://spark.apache.org/docs/latest/programming-guide.html#resilient-distributed-datasets-rdds)を作成します。次に、この例ではログファイル内の文字列 "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
```