Amazon DEA-C01: Datentransformation und -verarbeitung — Lernleitfaden
Teil des Amazon Data Engineer Associate DEA-C01 — Lernleitfaden. Üben Sie mit verifizierten Antworten im Amazon-Prüfungscenter, oder absolvieren Sie zeitlich begrenzte Übungstests auf ExamRoll.io.
Dieser Bereich behandelt die AWS-Services und -Muster, die zur Bereinigung, Transformation und Vorbereitung von Daten für Analysen und ML in großem Umfang verwendet werden. Der Schwerpunkt liegt auf der Auswahl der richtigen Rechenleistung und Tools (Glue, Lambda, EMR, DataBrew) basierend auf Datenvolumen, Latenzanforderungen und Kostenbeschränkungen. Das Verständnis von Service-Limits, Job-Konfigurationsparametern und der Interaktion von Datenformaten und Katalogen ist entscheidend für die Erstellung zuverlässiger, inkrementeller Pipelines.
AWS Glue ETL-Jobs (Spark und Python-Shell)
Glue Spark-Jobs sind die erste Wahl für groß angelegte, verteilte ETL-Prozesse: Sie laufen auf einem von AWS Glue verwalteten Apache Spark, verwenden den GlueContext und arbeiten mit den Typen DynamicFrame und Spark DataFrame. Die Konfiguration erfolgt über die Konsole oder die CLI mit dem Job-Typ “glueetl”, dem workerType (G.1X, G.2X, G.4X) und NumberOfWorkers; starten Sie über die CLI: aws glue start-job-run –job-name my-spark-job –arguments ‘–execution-class=STANDARD’. Verwenden Sie DynamicFrame-APIs (create_dynamic_frame.from_options, apply_mapping), wenn Sie schemeflexible Transformationen, integrierte Transformationen (Relationalize, Unnest) und eine automatische Verarbeitung von semistrukturierten Daten benötigen. Konvertieren Sie zu einem Spark DataFrame mit dyf.toDF(), wenn Sie Spark SQL, leistungsstärkere Joins oder benutzerdefinierte UDFs benötigen.
Glue Python-Shell-Jobs verwenden den Job-Typ “pythonshell” für leichtgewichtige Skripting- und Steuerungsebenen-Aufgaben. Sie nutzen eine einzelne DPU (1 DPU) mit begrenzter Parallelität und eignen sich am besten für kleine Dateimanipulationen, Metadaten-Updates oder zur Orchestrierung. Die Konfiguration erfolgt über aws glue create-job –name my-pyjob –command ‘{“Name”:“pythonshell”,“PythonVersion”:“3”}’ und der Start über aws glue start-job-run. Beachten Sie, dass Python-Shell-Jobs ein Limit von 1 DPU haben – verwenden Sie Spark für große Datenmengen.
Glue Job-Lesezeichen (Bookmarks) ermöglichen eine inkrementelle Verarbeitung, indem sie bereits verarbeitete S3-Objekte und -Partitionen nachverfolgen. Aktivieren Sie Lesezeichen in der Job-Konfiguration oder beim Starten von Ausführungen: aws glue start-job-run –job-name my-job –job-bookmark-option job-bookmark-enable. Lesezeichen funktionieren für S3-basierte Quellen, die die integrierten Konnektoren verwenden; JDBC-Quellen unterstützen Lesezeichen standardmäßig nicht und erfordern ein benutzerdefiniertes Watermarking oder eine Zustandsspeicherung.
Glue unterstützt jetzt die ExecutionClass FLEX für kostenoptimierte, nicht dringende Jobs. Starten Sie mit aws glue start-job-run –job-name my-job –execution-class FLEX, damit Glue den Job zu geringeren Kosten und mit gelockerten SLAs für die Startzeit einplanen kann. Verwenden Sie FLEX für Batch-Backfills und nicht latenzempfindliche Workloads; verwenden Sie STANDARD für eine vorhersagbare Latenz.
Entscheidungskriterien – ein schneller Vergleich:
-
DynamicFrame vs. Spark DataFrame
- Verwenden Sie DynamicFrame bei der Aufnahme von semistrukturierten JSON/Parquet-Daten mit Schema-Drift und nutzen Sie apply_mapping, relationalize und Glue-Transformationen.
- Verwenden Sie Spark DataFrame, wenn Sie die Leistung von Spark SQL, komplexe Joins, Fensterfunktionen und Spark-Bibliotheken von Drittanbietern benötigen.
- Konvertieren Sie zwischen den beiden mit DynamicFrame.fromDF(df, glueContext, “name”) und dyf.toDF().
-
Glue Spark vs. Python-Shell
- Wählen Sie Spark für Multi-Node, verteilte ETL-Prozesse auf großen Datenmengen und bei der Nutzung der Glue-Katalog-Integration in großem Umfang.
- Wählen Sie die Python-Shell für kleine, schnelle Aufgaben oder Orchestrierungsschritte, die in den Rahmen von 1 DPU passen.
AWS Lambda für leichtgewichtige Transformationen
Lambda ist ideal für ereignisgesteuerte, latenzarme und leichtgewichtige Transformationen, die direkt von S3, Kinesis oder EventBridge ausgelöst werden. Typische Anwendungsfälle sind Dateivalidierung, Metadatenextraktion, die Konvertierung von JSON zu CSV für kleine Dateien oder die Stream-Verarbeitung von Datensätzen. Konfigurieren Sie Speicher und Timeout mit aws lambda update-function-configuration –function-name myFunc –memory-size 2048 –timeout 300. Provisioned Concurrency kann mit aws lambda put-provisioned-concurrency-config festgelegt werden, um Cold Starts bei latenzempfindlichen Streaming-Pipelines entgegenzuwirken.
Beachten Sie die Limits von Lambda für die Datenverarbeitung: 15 Minuten maximale Ausführungszeit, 10 GB Arbeitsspeicher (10.240 MB) und nur 512 MB flüchtiger /tmp-Speicher. Für die Verarbeitung größerer Dateien können Sie die Verarbeitung verketten (Dateien aufteilen), die Daten in S3 zwischenspeichern und einen Glue- oder EMR-Job aufrufen oder eine mehrteilige Verarbeitung mit AWS Step Functions verwenden. Nutzen Sie Umgebungsvariablen für kleine Konfigurationen und IAM-Rollenrichtlinien, die strikt nach dem Prinzip der geringsten Rechtevergabe (Least Privilege) Berechtigungen gewähren.
Entscheidungskriterien – wann man Lambda wählen sollte:
- Verwenden Sie Lambda, wenn die Verarbeitung pro Aufruf in die Limits von 15 Minuten, 10 GB Arbeitsspeicher und 512 MB /tmp passt und eine Latenz im Sub-Sekunden- bis Sekundenbereich erforderlich ist.
- Vermeiden Sie Lambda für große, langlebige oder stark speicherintensive Transformationen; verwenden Sie stattdessen Glue Spark oder EMR.
Amazon EMR für die Verarbeitung im großen Maßstab
EMR ist die erste Wahl für anpassbare, groß angelegte Big-Data-Verarbeitung (Spark, Hadoop, Presto, Flink), wenn Kontrolle auf Clusterebene, benutzerdefinierte Bootstrap-Aktionen oder spezialisierte Bibliotheken erforderlich sind. Erstellen Sie Cluster über die CLI mit aws emr create-cluster und wählen Sie entweder --instance-groups oder --instance-fleets. Instanzflotten (Instance Fleets) bieten flexible Mischungen von Instanztypen und Kombinationen aus Spot/On-Demand; Instanzgruppen (Instance Groups) sind einfachere Gruppen mit fester Größe.
Zu berücksichtigende EMR-Clustermuster:
- Transiente Cluster: Starten Sie mit
--auto-terminateund übermitteln Sie Schritte (Steps), sodass der Cluster beendet wird, wenn die Schritte abgeschlossen sind. Gut für die Kostenkontrolle, aber ephemeres HDFS und der lokale Zustand gehen bei der Beendigung verloren. - Langlebige Cluster: Werden nicht automatisch beendet; verwenden Sie sie für interaktive Workloads, persistentes HDFS oder wenn viele kleine Jobs vom JVM-Warm-up profitieren. Speichern Sie kritische Daten persistent in S3 oder EBS-gestütztem Hadoop-Speicher, wenn eine Cluster-Beendigung erwartet wird.
Konfigurationsbeispiele:
- Instanzgruppen-CLI:
undefined
- Die Instanzflotten-CLI verwendet
--instance-fleetsmit OnDemand/Spot-Zuweisungen und mehreren Instanztypen für Ausfallsicherheit und Kostenoptimierung.
Verwenden Sie EMR, wenn Sie die volle Kontrolle über Hadoop-Ökosystemkomponenten, benutzerdefinierte Bootstrap-Skripte oder persistentes HDFS für Zwischendaten benötigen; andernfalls ist Glue Spark einfacher für verwaltetes Spark-ETL, das sich in den Glue Data Catalog integriert.
Glue DataBrew und visuelle Transformationen
Glue DataBrew ist ein visuelles No-Code/Low-Code-Tool zur Datenprofilerstellung, -bereinigung und -transformation, das sich an Datenanalysten und -ingenieure richtet, die interaktiv arbeiten. Erstellen Sie ein Dataset aus S3 oder dem Glue Catalog, erstellen Sie ein Rezept (Recipe) von Transformationen in der Konsole, sehen Sie sich eine Vorschau an einem Sample an und führen Sie Jobs aus, um die Rezepte im großen Maßstab anzuwenden. Planen Sie DataBrew-Jobs oder führen Sie sie über die CLI mit aws databrew start-job-run --name my-databrew-job aus.
DataBrew ist für Datenaufbereitungsaufgaben wie Standardisierung, Deduplizierung, Typkonvertierung und Transformationen auf Spaltenebene mit integrierten Funktionen optimiert. Es integriert sich mit dem Glue Catalog und schreibt die Ausgaben nach S3. Wählen Sie DataBrew, wenn Geschäftsanwender Self-Service-Bereinigung und schnelle Profilerstellung benötigen; für aufwendige Transformationslogik, komplexe Joins oder sehr große Datensätze bevorzugen Sie Glue Spark oder EMR.
Vergleich von visuellen und codebasierten Transformationen:
- Glue DataBrew
- Vorteile: schnelle Profilerstellung, rezeptbasiert, Nicht-Programmierer können Pipelines erstellen, integrierte Zeitplanung.
- Nachteile: nicht geeignet für sehr große oder hochkomplexe verteilte Joins und benutzerdefinierte Bibliotheken.
- Glue Spark / EMR
- Vorteile: volle programmatische Kontrolle, verarbeitet riesige Datensätze, unterstützt Bibliotheken von Drittanbietern.
- Nachteile: erfordert Entwicklerkenntnisse und mehr Konfiguration.
Häufige Fallstricke und Entscheidungskriterien
- Annahme, dass Glue-Job-Lesezeichen (Job Bookmarks) für JDBC-Quellen funktionieren – Lesezeichen verfolgen nur den Zustand von S3-Objekten/Partitionen; für inkrementelle JDBC-Ladevorgänge verwenden Sie Wasserzeichenspalten (Watermark Columns), Change-Data-Capture oder speichern Sie den Fortschritt in DynamoDB/S3.
- Behandlung von transienten EMR-Clustern wie zustandsbehaftete Systeme – transiente Cluster werden nach Abschluss der Schritte beendet und verlieren HDFS; speichern Sie Zwischendaten persistent in S3 oder verwenden Sie EBS-Volumes für dauerhaften Speicher.
- Ignorieren von Lambda-Kaltstarts in Streaming-Pipelines – Kaltstarts erhöhen die Latenz; mildern Sie dies mit Provisioned Concurrency für kritische Pfade oder verwenden Sie langlebige Rechenressourcen für strenge Anforderungen an niedrige Latenz.
- Ausführen großer Transformationen in der Glue Python Shell – Python-Shell-Jobs sind auf 1 DPU begrenzt; für große Datensätze verwenden Sie Glue-Spark-Jobs mit entsprechendem
workerType/NumberOfWorkers. - Fehlkonfiguration von EMR-Instanztypen: Wählen Sie Instanzflotten (Instance Fleets) für Kosten und Flexibilität mit Spot-Instanzen; verwenden Sie Instanzgruppen (Instance Groups), wenn Sie eine vorhersagbare Zusammensetzung der Instanzen benötigen.
- Übermäßige Nutzung von Glue Flex für dringende Workloads – FLEX reduziert die Kosten, kann aber die Startzeiten verzögern; verwenden Sie STANDARD für vorhersagbare Start- und Ausführungszeiten.
Praktisches Problem: Anwendungsfallszenario
AcmeRetail verarbeitet nächtliche Clickstream-Parquet-Dateien in eine einheitliche Kundenaktivitätstabelle und möchte eine inkrementelle Verarbeitung, um die Neuverarbeitung von monatelangen Daten zu vermeiden und gleichzeitig die Kosten für nicht dringende Nachverarbeitungen (Backfills) niedrig zu halten.
- Verwenden Sie ein partitioniertes S3-Layout (
year=/month=/day=) und registrieren Sie das Dataset im Glue Data Catalog. - Erstellen Sie einen Glue-Spark-Job (
glueetl), derDynamicFrame.from_catalogfür Schemaflexibilität liest, Mappings anwendet, für komplexe Joins in einen DataFrame konvertiert und partitioniertes Parquet zurück nach S3 schreibt. - Aktivieren Sie Glue-Job-Lesezeichen (
job-bookmark-enable) für nächtliche Läufe, um nur neue Partitionen zu verarbeiten; für JDBC-Anreicherungsquellen implementieren Sie Wasserzeichenspalten (Watermark Columns), die in DynamoDB persistiert werden, um den maximal verarbeiteten Zeitstempel zu verfolgen. - Für routinemäßige nächtliche Läufe verwenden Sie
ExecutionClass=STANDARD; für nicht dringende historische Neuverarbeitungen übermitteln Sie Läufe mit--execution-class FLEX, um Kosten zu sparen. - Überwachen Sie mit CloudWatch-Metriken und richten Sie Alarme für Job-Fehlschläge ein; für sehr große Maßstäbe oder benutzerdefinierte Bibliotheken ziehen Sie transiente EMR-Cluster in Betracht, die Zwischenergebnisse nach S3 schreiben und sich automatisch beenden.
Begründung: Dieser Ansatz nutzt das verwaltete Spark von Glue für skalierbare Transformationen und DynamicFrames für semistrukturierte Eingaben, verwendet Job-Lesezeichen für die inkrementelle S3-Verarbeitung und nutzt FLEX zur Kostensenkung bei Nachverarbeitungen – was Kosten, Zuverlässigkeit und betriebliche Einfachheit sicherstellt.
← Datenkatalogisierung und Metadatenmanagement · Alle Domänen · Datenorchestrierung und Workflow-Management →
Diese Fragen üben → · Zeitlich begrenzte Übung auf ExamRoll.io →
Pass the whole exam — not just this question
You found this answer. Get every verified question and explanation in one place, and save hours of prep. Free to start.
Bestehe deine Prüfung →