Greifen Sie auf die Spark Shell zu - Amazon EMR

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Greifen Sie auf die Spark Shell zu

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 Master-Knoten über SSH herstellen und spark-shell aufrufen. Weitere Informationen zur Verbindung mit dem Master-Knoten finden Sie im Amazon EMR Management Guide unter Connect mit dem Master-Knoten mithilfe von SSH herstellen. Die folgenden Beispiele verwenden die in Amazon S3 gespeicherten Apache HTTP Server-Zugangsprotokolle.

Anmerkung

Der in diesen Beispielen verwendete Bucket steht Clients zur Verfügung, die auf USA Ost (Nord-Virginia) zugreifen können.

Standardmäßig erstellt die Spark-Shell ein eigenes SparkContextObjekt namenssc. Sie können diesen Kontext verwenden, wenn er in der REPL erforderlich ist. sqlContext ist auch in der Shell verfügbar und es ist ein HiveContext.

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

In diesem Beispiel wirdsc eine textFile in Amazon S3 gelesen.

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 das Vorkommen einer Zeichenfolge 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. Genau wie beispark-shell, invkepyspark auf dem Master-Knoten; es hat auch dasselbe SparkContextObjekt.

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