Spark シェルにアクセスする - Amazon EMR

Spark シェルにアクセスする

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

注記

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

デフォルトでは、Spark シェルによって sc と呼ばれる独自の SparkContext オブジェクトが作成されます。REPL 内で必要とされる場合、このコンテキストを使用することができます。sqlContext は、シェルでも使用できる HiveContext です。

例 Spark を使用して Amazon S3 に格納されたファイルにおける文字列の出現回数をカウントする

この例では、sc を使用して Amazon S3 で textFile を読み取ります。

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 と関連付けられたデータ構造を作成します。次に、この例ではログファイル内の文字列 "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 シェル使用して Amazon S3 に格納されたファイルにおける文字列の出現回数をカウントする

Spark には、Python ベースのシェルである pyspark も用意されており、Python で記述された Spark プログラムのプロトタイプを作成するために使用できます。spark-shell と同様、プライマリノードで 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-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