Wir können jetzt lernen, wie wir Spark mit Python verwenden können, indem wir die pyskark
Library verwenden. Gehe sicher, dass du die Video-Lektionen zu Spark und RDDs anschaust, bevor du mit diesem Code anfängst.
Dieses Notebook dient als Code Refrenz für den Big Data Abschnitt des Kurses, der Amazon Web Services einschließt. Das Video wird ausführlichere Erklärungen zum Code bieten.
Zuerst müssen wir einen SparkContext
erstellen. Wir importieren ihn aus pyspark
:
from pyspark import SparkContext
Jetzt erstellen wir einen SparkContext. Ein SparkContext repräsentiert eine Verbinding zu einem Spark Cluster. Es kann dazu verwendet werden ein RDD zu erstellen und Variablen an das Cluster zu übergeben.
Hinweis: Du kannst nur einen SparkContext auf einmal haben.
sc = SparkContext()
Wir werden mit dem "Hallo Welt" Beispiel beginnen. Es besteht darin eine Textdatei zu lesen. Zuerst sollten wir dazu eine solche Datei schreiben.
Wir schreiben eine beispielhafte Textdatei, die wir anschließend lesen können. Wir verwenden dazu Jupyter Notebook Code, aber jede andere .txt-Datei kann verwendet werden:
%%writefile beispiel.txt
erste zeile
zweite zeile
dritte zeile
vierte zeile
Overwriting beispiel.txt
Jetzt können wir die Textdatei verwenden, indem wir die textFile
Methode des bereits erstellten SparkContext nutzen. Diese Methode wird eine TextDatei vom HDFS lesen, einem lokalen Dateisystem (verfügbar auf allen Nodes), oder von jeder Hadoop-unterstützten Datei System URI, und gibt es als RDD von Strings zurück.
textFile = sc.textFile('beispiel.txt')
Sparks primäre Abstraktion ist eine verteilte Sammlung von Items, die Resilient Distributed Dataset (RDD) genannt werden. RDDs können durch Hadoop InputFormats (wie bspw. HDFS Dateien) erstellt werden oder durch Transformation anderer RDDs.
Wir haben gereade ein RDD erstellt, indem wir die textFile
Methode verwendet haben. Auf dieses Objekt können wir jetzt Aktionen anwenden. Zu den möglichen Operationen zählt beispielsweise ein Count der Zeilen.
RDDs bieten Aktionen (en. Actions), die Werte zurückgeben, und Transformationen, die auf neue RDDs verweisen. Beginnen wir mit zwei Actions:
textFile.count()
4
textFile.first()
'erste zeile'
Jetzt können wir Transformationen (en. Transformations) verwenden. Ein Beispiel ist die filter
Transformation, die ein neues RDD zurückgibt, welches ein Subset der urspünglichen Daten beinhaltet. Erstellen wir eine einfache Transformation, indem wir die filter()
Methode verwenden. Diese Methode (genau wie Python's eigene Filter Funktion) gibt nur Elemente zurück, die die Bedingung erfüllen. Wir können nach Zeilen suchen, in denen "zwei" enthalten ist. In unserem Fall sollte es nur eine solche Zeile geben. Überprüfen wir das:
zweifind = textFile.filter(lambda line: 'zwei' in line)
# RDD
zweifind
PythonRDD[4] at RDD at PythonRDD.scala:48
# Action auf die Transformation anwenden
zweifind.collect()
['zweite zeile']
# Action auf die Transformation anwenden
zweifind.count()
1
Achte darauf, wie die Transformation keinen Output erzeugt, wenn keine Action darauf ausgeführt wird. In der nächsten Lektion: Fotgeschrittene Spark und Python Inhalte. Wir werden damit beginnen viele weitere Beispiele für Actions, Transformations und deren Zusammenspiel zu sehen.