Zugriff auf die Spark-Shell - Amazon EMR

Zugriff auf die Spark-Shell

Die Spark-Shell basiert auf Scala REPL (Read-Eval-Print-Loop). Damit können Sie Spark-Programme interaktiv erstellen und Arbeit an das Framework senden. Sie können auf die Spark-Shell zugreifen, indem Sie eine Verbindung mit dem Primärknoten über SSH herstellen und spark-shell aufrufen. Weitere Informationen zum Herstellen einer Verbindung mit dem Primärknoten finden Sie unter Verbinden mit dem Primärknoten über SSH im Verwaltungshandbuch für Amazon EMR. In den folgenden Beispielen werden Apache-HTTP-Serverzugriffsprotokolle in Amazon S3 verwendet.

Anmerkung

Der in diesen Beispielen verwendete Bucket ist für Clients mit Zugriff auf USA Ost (Nord-Virginia) verfügbar.

Standardmäßig erstellt die Spark-Shell ein eigenes SparkContext-Objekt mit dem Namen sc. Sie können diesen Kontext bei Bedarf innerhalb von REPL verwenden. sqlContext ist auch in der Shell verfügbar und ist ein HiveContext.

Beispiel Verwenden Sie die Spark-Shell, um die Vorkommen einer Zeichenkette in einer in Amazon S3 gespeicherten Datei zu zählen

Dieses Beispiel verwendet sc zum Lesen eines textFile in 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 erstellt die Datei „textFile“ und die zugehörige -Datenstruktur. Im Beispiel wird dann die Anzahl der Zeilen in der Protokolldatei mit der Zeichenfolge "cartoonnetwork.com" gezählt:

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
Beispiel Verwenden Sie die Python-basierte Spark-Shell, um die Vorkommen einer Zeichenkette in einer in Amazon S3 gespeicherten Datei zu zählen

Spark umfasst auch eine auf Python basierende Shell, pyspark, mit der Sie Prototypen von in Python geschriebenen Spark-Programmen entwickeln können. Wie bei spark-shell können Sie pyspark auf dem Primärknoten aufrufen. Sie verfügt zudem über dasselbe SparkContext-Objekt.

>>> 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 erstellt die Datei „textFile“ und die zugehörige -Datenstruktur. Im Beispiel wird dann die Anzahl der Zeilen in der Protokolldatei mit der Zeichenfolge "cartoonnetwork.com" gezählt.

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