Generalisierungen
:Involvierte Definitionen
:Veranstaltung
: DEDSReferenz
: @storl2024 (KE5, Analyse von Big Data; Teil 4)
⠀
Definition: Spark DataFrame
Spark DataFrames stellen eine Erweiterung der RDD-Datenstruktur dar.
Im Gegensatz zu RDDs ermöglichen DataFrames eine schematische Darstellung der Daten, ähnlich zu relationalen Datenbanken, die sich:
- in einer vereinfachten high-level API sowie
- der Unterstützung von SQL-Abfragen
äußert. Das Schema kann entweder durch die Nutzer definiert oder direkt durch den DataFrame inferiert werden.
DataFrames bieten gegenüber RDDs zudem einige Optimierungen, wie z.B. Project Tungsten, um die Ausführungsgeschwindigkeit zu verbessern.
Anmerkung
Beispielhaftes Spark SQL Programm (mit der API)
Als beispielhaftes Spark Programm mit der DataFrame-API, hier die Zählung aller Studierenden nach Fakultät, wobei folgendes CSV gegeben sei:
<data.csv> studentA;Hagen;Psychology studentB;Frankfurt;Law studentC;Hagen;Computer Science studentD;Berlin;Law ...
Lesen, filtern und verarbeiten können wir die Daten nun wie folgt:
# Spark Session starten spark = SparkSession.builder \ .master("yarn") \ .appName("ApplicationName") \ .getOrCreate() students = spark.read.csv("path/to/data.csv", header=True, inferSchema=True) students.show() # | student | city | faculty | # | -------- | --------- | ---------- | # | studentA | Hagen | Psychology | # | studentB | Frankfurt | Law | # | ... | ... | ... | result = students.where(students["city"]=="Hagen") \ .groupby("faculty") \ .count() result.show()
Beispielhaftes Spark SQL Programm (mit SQL)
Als beispielhaftes Spark Programm mit der DataFrame-SQL-Syntax, hier die Zählung aller Studierenden nach Fakultät, wobei folgendes CSV gegeben sei:
<data.csv> studentA;Hagen;Psychology studentB;Frankfurt;Law studentC;Hagen;Computer Science studentD;Berlin;Law ...
Lesen, filtern und verarbeiten können wir die Daten nun wie folgt:
# Spark Session starten spark = SparkSession.builder \ .master("yarn") \ .appName("ApplicationName") \ .getOrCreate() spark.sql("CREATE TEMP VIEW students \ USING CSV \ OPTIONS (path = 'path/to/data.csv', \ header = 'True', \ inferSchema = 'True')") result = spark.sql("\ SELECT faculty, COUNT(faculty) \ FROM students \ WHERE city == 'Hagen' \ GROUP BY faculty") result.show()