Kurs
Cloud-native Lösungen sind in vielen Branchen gefragt, weil sie Sicherheit, Flexibilität und Skalierbarkeit verbinden. Eine davon ist AWS Glue: Der Dienst vereinfacht die Datenverarbeitung — ein zentrales Element, um fundierte Entscheidungen zu treffen und Geschäftsprozesse zu optimieren.
In diesem Tutorial nutzen wir AWS Glue für eine typische ETL-Aufgabe (Extract, Transform, Load): Wir konvertieren CSV-Dateien aus einem S3-Bucket in das Parquet-Format. Parquet verbessert sowohl die Verarbeitungseffizienz als auch die Abfrageleistung.
Wir stellen dir AWS Glue, seine Kernfunktionen und die Vorteile automatisierter Datenaufbereitung vor. Danach richten wir dein AWS-Konto ein, erstellen IAM-Rollen und konfigurieren den Zugriff auf deinen S3-Bucket. Zum Schluss zeigen wir dir, wie du mit einem Glue Crawler deine Datensätze scannst und Parquet-Dateien erzeugst.
Was ist AWS Glue?
Bevor wir praktisch einsteigen, klären wir kurz, was AWS Glue ist und warum es sich für Datenverarbeitungsaufgaben eignet.
AWS Glue ist ein vollständig verwalteter ETL-Service, mit dem du Daten für Analysen einfach vorbereiten und laden kannst. Er stellt eine serverlose Umgebung bereit, um ETL-Jobs zu erstellen, auszuführen und zu überwachen. Über den AWS Glue Data Catalog erkennt und profiliert Glue deine Daten automatisch, empfiehlt und generiert ETL-Code und bietet einen flexiblen Scheduler für Abhängigkeiten, Monitoring und Wiederholungen.
Warum AWS Glue nutzen?
Wenn du die Vorteile von AWS Glue kennst, erkennst du den Wert im Datenverarbeitungs-Workflow besser. Es gibt mehrere gute Gründe für Glue, einige davon sind unten dargestellt:

Warum AWS Glue? Bild: Autor
- Serverlos: Du musst keine Server bereitstellen oder verwalten, was den Betriebsaufwand reduziert.
- Automatische Codegenerierung: AWS Glue kann automatisch Python- oder Scala-Code für ETL-Jobs erzeugen.
- Integriertes Job-Scheduling und Monitoring: Damit planst und überwachst du ETL-Jobs mühelos.
- Datenerkennung und -katalogisierung: Glue Crawler erkennen, katalogisieren und bereiten Daten automatisch für Analysen vor.
- Integration mit anderen AWS-Services: Funktioniert nahtlos mit Diensten wie Amazon S3, Amazon RDS, und Amazon Redshift.
- Kosteneffizient: Du zahlst nur für Ressourcen, die während der ETL-Ausführung verbraucht werden.
Werde Dateningenieur
AWS Glue: Schritt für Schritt
Jetzt wird’s spannend: Lass uns lernen, wie du Glue für eine sehr gängige Aufgabe nutzt — die Konvertierung von CSV in Parquet.
1. AWS-Konto einrichten
Wenn du neu bei AWS bist, erstellst du zuerst ein Konto und meldest dich anschließend in der Management Console an.
- Gehe zu AWS und registriere dich.
- Melde dich danach in der AWS Management Console an.
2. IAM-Rolle erstellen
AWS Identity and Access Management (IAM) ermöglicht es, den Zugriff auf AWS-Services und -Ressourcen sicher zu verwalten.
Wir benötigen eine IAM-Rolle, damit Glue auf die relevanten Services zugreifen kann. In unserem Fall ist S3 der Hauptdienst, in dem unsere CSV-Dateien liegen.
Das AWS Storage Tutorial ist ein guter Einstieg für AWS-Neulinge, um Systeme wie S3 besser zu verstehen.
Die wichtigsten Schritte zur Erstellung der IAM-Rolle ab der Management Console sind:
- Navigiere zum IAM-Service.
- Klicke in der linken Seitenleiste auf "Roles" und dann auf "Create role".
- Unter "Choose a use case" wähle "Glue" und klicke auf "Next: Permissions".
- Suche und wähle folgende Richtlinien aus:
AWSGlueServiceRoleAmazonS3FullAccess(Hinweis: In Produktionsumgebungen solltest du eine restriktivere Richtlinie verwenden).- Gib deiner Rolle einen Namen (z. B. "GlueETLRole") und optional eine Beschreibung. Klicke abschließend auf "Create role".

Schritte zum Erstellen einer IAM-Rolle in der AWS-Konsole. Bild: Autor
Die komplette IAM-Anleitung zeigt dir Schritt für Schritt, wie du AWS-Umgebungen absicherst, Zugriffe mit Nutzern, Gruppen und Rollen verwaltest und Best Practices für robuste Sicherheit umsetzt.
3. S3-Bucket einrichten
Wir speichern sowohl die Eingabe-CSV-Dateien als auch die ausgegebenen Parquet-Dateien in Amazon S3.
Die Beispieldaten wurden zu Demonstrationszwecken erstellt und liegen im GitHub-Repository des Autors:
athletes.csv: Enthält Informationen zu Athletinnen und Athleten, inkl. ID, Name, Land, Sportart und Alter.events.csv: Listet verschiedene Events mit Event-ID, Sportart, Eventname, Datum und Veranstaltungsort.medals.csv: Erfasst Medaillendaten und verknüpft Events und Athleten mit den gewonnenen Medaillen.
Jetzt richten wir den S3-Bucket wie folgt ein:
- Öffne in der AWS Management Console den S3-Service.
- Klicke auf "Create bucket" und gib einen eindeutigen Namen ein (z. B. "my-glue-csv-etl-bucket").
- Lass der Einfachheit halber die Standardeinstellungen und erstelle den Bucket.
- Erstelle im Bucket zwei Ordner: "input" und "output".

Ablauf: S3-Bucket und Ordner anlegen. Bild: Autor
Nach dem Anlegen der beiden Ordner sollte dein Bucket so aussehen:

Ansicht der Ordner im S3-Bucket. Bild: Autor
Jetzt können wir diese CSV-Eingabedateien in den Ordner "input" hochladen.

Inhalt des Ordners “input” im S3-Bucket. Bild: Autor
4. Glue Crawler erstellen
Ein Glue Crawler erkennt und katalogisiert unsere Daten automatisch. In diesem Abschnitt erstellen wir einen Crawler, der alle CSV-Eingabedateien scannt.
Die wichtigsten Schritte:
- Öffne den AWS Glue Service in der AWS Management Console.
- Klicke in der linken Seitenleiste unter "Data catalog" auf "Crawlers".
- Klicke auf "Create crawler".
- Gib deinem Crawler einen Namen (z. B. "CSV-to-Parquet-Crawler") und lass die Beschreibung frei. Klicke dann auf "Next".
- Als Datenquelle wählen wir “S3”. Wähle dazu "Add data source" als Crawler Source Type und klicke auf "Next".

Ablauf: Glue Crawler in der Konsole erstellen — Teil 1. Bild: Autor
- Wähle "S3" als Datenspeicher und gib deinen S3-Bucket-Pfad an, z. B. über “Browse S3”. Klicke anschließend auf "Next".
- Wähle “Crawl all sub-folders”.
- Wähle “Add an S3 data source” und klicke auf "Next".
- Prüfe den Datentyp “S3” und klicke dann auf “Next”.

Ablauf: Glue Crawler in der Konsole erstellen — Teil 2. Bild: Autor
Nachdem der S3-Bucket verbunden ist, verknüpfen wir die zuvor erstellte IAM-Rolle, damit Glue auf S3-Buckets zugreifen kann. Unsere Rolle heißt “GlueETLRole”.
- Wähle den Rollennamen im Feld “Existing IAM role” aus.
- Klicke auf “Next”.

Ablauf: Glue Crawler in der Konsole erstellen — Teil 3. Bild: Autor
Als Nächstes erstellen wir eine Datenbank. Die Datenbank “paris_olympics_db” dient im AWS Glue Data Catalog als zentrales Repository, um Metadaten zu unseren CSV-Dateien zu speichern und zu organisieren.
Der Katalog ermöglicht effiziente Datenerkennung und vereinfacht unseren ETL-Prozess, um die Daten zu Athleten, Events und Medaillen zusammenzuführen und in Parquet zu konvertieren.
Aktuell existiert noch keine Datenbank. So legst du sie an:
- Wähle “Add database”. Im neuen Fenster gibst du “paris_olympics_db” als Namen ein, lässt die übrigen Felder auf Standard und klickst auf “Create database”.

Ablauf: Glue Crawler in der Konsole erstellen — Teil 4. Bild: Autor
Wechsle zurück in den ursprünglichen Tab zur Datenbankverknüpfung, aktualisiere den Bereich “Target database” und wähle die neu erstellte Datenbank aus. Klicke dann auf “Next”.

Ablauf: Glue Crawler in der Konsole erstellen — Teil 5. Bild: Autor
Prüfe alles und klicke abschließend auf “Create crawler”.

Glue Crawler “Review and create”-Ansicht. Bild: Autor
Nach dem Erstellen des Crawlers siehst du eine Bestätigung wie folgt:

Crawler erfolgreich erstellt. Bild: Autor
5. Glue Crawler ausführen
Nachdem der Crawler erstellt ist, führen wir ihn aus und sehen, wie er unsere Daten katalogisiert.

Glue-Schaltfläche “Run crawler”. Bild: Autor
- Wähle deinen Crawler aus der Liste.
- Klicke auf "Run crawler".
- Warte, bis der Crawler fertig ist. Das kann ein paar Minuten dauern.
- Gehe anschließend in der linken Seitenleiste unter "Data catalog" zu "Databases".
- Öffne die erstellte Datenbank.
- Du solltest eine Tabelle sehen, die die Struktur deiner CSV-Daten abbildet.

Ansicht der durch den Glue Crawler erstellten Tabellen in der Datenbank. Bild: Autor
6. Glue Job erstellen und ausführen
Mit dem erstellten Datenkatalog können wir nun einen Glue Job anlegen, der unsere CSV-Dateien zusammenführt und ins Parquet-Format konvertiert. Dieser Abschnitt führt dich durch die Erstellung des Jobs und liefert den benötigten Python-Code.
- Gehe in der linken Seitenleiste der AWS Glue-Konsole unter "ETL" zu "Jobs".
- Wähle den Script Editor, um Python-Code zu schreiben, und klicke auf “Create script”.

Glue Job erstellen und ausführen — Teil 1. Bild: Autor
Nach dem Anlegen öffnet sich ein Skript-Tab, in dem wir dem Job einen Namen geben, in unserem Fall “CS”.
- Füge den folgenden Code in den Editor ein und klicke auf “Save”.

Glue Job erstellen und ausführen — Teil 2. Bild: Autor
Der zugehörige Python-Code lautet:
import sys
from awsglue.transforms import *
from awsglue.utils import getResolvedOptions
from pyspark.context import SparkContext
from awsglue.context import GlueContext
from awsglue.job import Job
from pyspark.sql.functions import col, to_date
# Initialize the Spark and Glue contexts
sc = SparkContext()
glueContext = GlueContext(sc)
spark = glueContext.spark_session
job = Job(glueContext)
# Set Spark configurations for optimization
spark.conf.set("spark.sql.adaptive.enabled", "true")
spark.conf.set("spark.sql.adaptive.coalescePartitions.enabled", "true")
# Get job parameters
args = getResolvedOptions(sys.argv, ['JOB_NAME'])
# Set the input and output paths
input_path = "s3://glue-csv-etl-bucket/input/"
output_path = "s3://glue-csv-etl-bucket/output/"
# Function to read CSV and write Parquet
def csv_to_parquet(input_file, output_file):
try:
# Read CSV
df = spark.read.option("header", "true") \
.option("inferSchema", "true") \
.option("mode", "PERMISSIVE") \
.option("columnNameOfCorruptRecord", "_corrupt_record") \
.csv(input_file)
# Print schema for debugging
print(f"Schema for {input_file}:")
df.printSchema()
# Convert date column if it exists (assuming it's in the format M/d/yyyy)
if "date" in df.columns:
df = df.withColumn("date", to_date(col("date"), "M/d/yyyy"))
# Write Parquet
df.write.mode("overwrite").parquet(output_file)
print(f"Successfully converted {input_file} to Parquet at {output_file}")
print(f"Number of rows processed: {df.count()}")
except Exception as e:
print(f"Error processing {input_file}: {str(e)}")
# List of files to process
files = ["athletes", "events", "medals"]
# Process each file
for file in files:
input_file = f"{input_path}{file}.csv"
output_file = f"{output_path}{file}_parquet"
csv_to_parquet(input_file, output_file)
job.commit()
print("Job completed.")
Kurz erklärt, was der Code macht:
- Imports: Bindet benötigte Bibliotheken aus AWS Glue, PySpark und der Python-Standardbibliothek ein.
- Initialisierung: Initialisiert Spark- und Glue-Kontexte und setzt Spark-Optimierungen.
- Job-Parameter: Liest Job-Parameter (insbesondere den Jobnamen) aus den Kommandozeilenargumenten.
- Pfade: Definiert Eingabe- und Ausgabe-Pfade für CSV- und Parquet-Dateien im S3-Bucket.
- Funktionsdefinition:
csv_to_parquet()liest eine CSV-Datei, gibt das Schema aus, konvertiert ggf. eine Datumsspalte und schreibt die Daten als Parquet. Fehler werden abgefangen und geloggt. - Dateiverarbeitung: Verarbeitet die Dateiliste (
athletes,events,medals) jeweils übercsv_to_parquet(). - Job-Abschluss: Commit des Jobs und Ausgabe einer Abschlussmeldung.
Bevor wir den Job ausführen, ergänzen wir im Bereich “Job details” noch folgende Einstellungen:
- Hinterlege die zuvor erstellte IAM-Rolle, damit der Job ausgeführt werden kann.
- Setze den Job-“Type” auf “Spark”, belasse den Rest bei den Standardwerten und klicke auf “Save”.
- Führe den Job aus!

Glue Job erstellen und ausführen — Teil 3. Bild: Autor
Nach erfolgreicher Ausführung siehst du detaillierte Informationen zum Status:

Detailansicht eines Glue Job Runs. Bild: Autor
Die Ausführungsdetails zu prüfen und zu überwachen ist entscheidend für effiziente und verlässliche Datenpipelines. Diese Kennzahlen helfen dir bei Folgendem:
- Performance optimieren: Ausführungszeiten verfolgen, um Job-Effizienz und Ressourceneinsatz zu verbessern.
- Kosten steuern: Ressourcennutzung (DPUs, Worker) überwachen, Budget einhalten und Ausgaben optimieren.
- Kapazitäten planen: Ausführungsmetriken zur Bedarfsplanung und Skalierung nutzen.
Die erfolgreiche Ausführung hat jede CSV-Datei in die entsprechende Parquet-Datei umgewandelt und im Ordner “output” gespeichert, wie unten zu sehen:
- Links siehst du Ordner mit dem gleichen Namen wie die ursprünglichen CSV-Dateien.
- Rechts befinden sich die Parquet-Dateien zu den jeweiligen CSVs.

Inhalt des Ordners “output” im S3-Bucket. Bild: Autor
Fazit und nächste Schritte
Dieses Tutorial hat AWS Glue und seine Funktionen vorgestellt. Du hast gelernt, eine AWS-Umgebung einzurichten und die AWS-Glue-Oberfläche zu nutzen. Außerdem hast du einen Glue Crawler aufgebaut, um Daten zu katalogisieren, und einen Glue Job erstellt, um sie zu transformieren — inklusive der erfolgreichen Konvertierung von CSV nach Parquet.
Du kannst darauf aufbauen, indem du Trigger einrichtest, um Workflows zu automatisieren, Fehlerbehandlung und Logging implementierst und Parquet-Dateien weiter optimierst. Erkunde außerdem Abfragen deiner Daten mit AWS Athena oder Amazon Redshift Spectrum.
Achte außerdem auf deine AWS-Nutzung und -Kosten und räume Ressourcen auf, die du nicht mehr brauchst, um unnötige Ausgaben zu vermeiden.
Die Kurse Introduction to AWS und AWS Cloud Technology and Services sind ideale nächste Schritte für dein Lernen!
Der erste Kurs vermittelt eine solide Grundlage in AWS und Cloud-Computing — perfekt für Einsteiger oder zum Auffrischen. Der zweite Kurs ist praxisorientiert und vertieft dein anwendungsnahes Verständnis der AWS-Services.
Lass dich für deine Traumrolle als Data Engineer zertifizieren
Unsere Zertifizierungsprogramme helfen dir, dich von anderen abzuheben und potenziellen Arbeitgebern zu beweisen, dass deine Fähigkeiten für den Job geeignet sind.

FAQs
Was sind Best Practices, um die Performance von Parquet-Dateien zu optimieren?
Um die Performance von Parquet-Dateien zu optimieren, passe die Dateigröße an (ideal sind 128 MB bis 1 GB), partitioniere deine Daten für effizientere Abfragen und wähle den passenden Kompressions-Codec (z. B. Snappy oder Gzip). Diese Maßnahmen reduzieren I/O und beschleunigen Abfragen in Tools wie AWS Athena bei großen Datensätzen.
Wie implementiere ich Fehlerbehandlung und Logging in AWS Glue Jobs?
AWS Glue integriert sich mit Amazon CloudWatch, sodass du Jobstatus, Fehler und benutzerdefinierte Logs verfolgen kannst. Du kannst Glue Jobs so konfigurieren, dass sie Logs nach CloudWatch schreiben. Das erleichtert Performance-Monitoring, Troubleshooting und eine reibungslose ETL-Ausführung.
Welche Anwendungsfälle gibt es für AWS Glue über die CSV-zu-Parquet-Konvertierung hinaus?
AWS Glue ist vielseitig und eignet sich u. a. für Deduplikation, Anreicherung und Schema-Transformationen. Häufige Szenarien sind das Integrieren mehrerer Quellen (z. B. RDS, S3, Redshift) in ein einheitliches Format, die Datenaufbereitung für Machine-Learning-Modelle sowie Transformationen in Data Lakes.
Wie schneidet AWS Glue im Vergleich zu ETL-Tools wie Apache Airflow oder Databricks ab?
AWS Glue ist ein vollständig verwalteter, serverloser ETL-Service, während Apache Airflow ein Open-Source-Tool zur Workflow-Orchestrierung ist, das mehr Konfiguration und Infrastruktur erfordert. Databricks ist hingegen auf großskalige Analytik und Machine Learning ausgelegt. Glue punktet mit einfacher Bedienung und enger AWS-Integration, für hochkomplexe Workflows bieten Airflow oder Databricks jedoch oft mehr Flexibilität.
Wie kann ich AWS Glue Jobs mit Triggern automatisieren?
Mit Triggern in AWS Glue automatisierst du ETL-Workflows, indem du Jobs zu bestimmten Zeiten oder nach Ereignissen startest, etwa wenn neue Daten in einem S3-Bucket ankommen. Du kannst Zeit- oder Ereignis-Trigger in der Glue-Konsole konfigurieren und so Datenverarbeitung ohne manuelles Eingreifen ermöglichen.
Zoumana ist ein vielseitiger Datenwissenschaftler, der sein Wissen gerne mit anderen teilt und anderen etwas zurückgibt. Er erstellt Inhalte auf YouTube und schreibt auf Medium. Er hat Freude am Sprechen, Programmieren und Unterrichten. Zoumana hat zwei Master-Abschlüsse. Den ersten in Informatik mit dem Schwerpunkt Maschinelles Lernen in Paris, Frankreich, und den zweiten in Datenwissenschaft an der Texas Tech University in den USA. Sein beruflicher Werdegang begann als Softwareentwickler bei Groupe OPEN in Frankreich, bevor er als Berater für maschinelles Lernen zu IBM wechselte, wo er End-to-End-KI-Lösungen für Versicherungsunternehmen entwickelte. Zoumana arbeitet bei Axionable, dem ersten nachhaltigen KI-Startup mit Sitz in Paris und Montreal. Dort arbeitete er als Data Scientist und implementierte KI-Produkte, vor allem NLP-Anwendungsfälle, für Kunden aus Frankreich, Montreal, Singapur und der Schweiz. Zusätzlich widmete er 5% seiner Zeit der Forschung und Entwicklung. Zurzeit arbeitet er als Senior Data Scientist bei der IFC, der Weltbankgruppe.
