Ihr Unternehmen muss eine große Menge an Kundendaten aus einer einfachen Datei in Daten des Typs „struct“ konvertieren und diese in eine Avro-Datei schreiben. Die Eingabedatei enthält Kundendaten wie Name, Alter und Telefonnummer. Wenn der Kundenname in der Eingabedatei Null ist, sollten Sie der Ausgabedatei keine Kundendaten hinzufügen.
Sie können ein Mapping mit einer Java-Umwandlung entwickeln, um die Umwandlungsfunktionalität zu definieren. Führen Sie in der Hadoop-Umgebung das Mapping auf der Spark-Engine aus, um die Daten zu übertragen und die „struct“-Daten in eine Avro-Datei zu schreiben.
Erstellen Sie ein Mapping und konfigurieren Sie die folgenden Umwandlungen:
Leseumwandlung, die Kundendaten aus einer Einfachdateiquelle liest
Java-Umwandlung als aktive Umwandlung, die einfache Daten in „struct“-Daten konvertiert und inkonsistente Daten entfernt
Schreibumwandlung, die die „struct“-Daten in eine Avro-Datei schreibt
Die folgende Abbildung zeigt das Mapping mit einer Leseumwandlung, einer Java-Umwandlung und einer Schreibumwandlung.
Erstellen Sie auf der Registerkarte „Typdefinitionsbibliothek“ des Mapping-Editors die komplexe Datentypdefinition „Customer“. Die komplexe Datentypdefinition stellt das Schema der „struct“-Daten dar. Benennen Sie die Typdefinitionsbibliothek in „CustomerInfo“ um. Fügen Sie die komplexe Datentypdefinition den folgenden Elementen hinzu:
„name“mit dem Typ „string“
„age“ mit dem Typ „integer“
„phones“ mit dem Typ „array“ mit String-Elementen
Die folgende Abbildung zeigt die komplexe Datentypdefinition in der Typdefinitionsbibliothek:
Fügen Sie in der Java-Umwandlung einen „struct“-Ausgabeport hinzu und geben Sie die Typkonfiguration des Ports an, um die von Ihnen erstellte komplexe Datentypdefinition zu referenzieren. Die Java-Umwandlung generiert eine Klasse „Customer“ mit Settern und Gettern, um die Member-Felder zu lesen und festzulegen. Die Klasse enthält die folgenden Member-Felder:
_name
_age
_phones
Die folgende Abbildung zeigt die für den struct-Port erstellte Klasse auf der Registerkarte
Full-Code
der
Java
-Ansicht:
Der Java-Datentyp für den struct-Port verwendet den Namen der Typdefinitionsbibliothek und die komplexe Datentypdefinition. Die folgende Abbildung zeigt den Java-Datentypnamen „CustomerInfo.Customer“ für das „cust“-Feld im generierten Code:
Importieren Sie in der
Java
-Ansicht der Java-Umwandlung integrierte und benutzerdefinierte Java-Pakete sowie Java-Pakete von Drittanbietern, die die Umwandlung benötigt. Schreiben und kompilieren Sie den Java-Code, der einfache Daten in „struct“-Daten zu konvertiert und die Kundenzeile entfernt, wenn der Kundenname null ist.
Die folgende Abbildung zeigt den Code auf der Registerkarte
Bei Eingabe
:
Validieren Sie das Mapping und führen Sie es auf der Spark-Engine aus, um die umgewandelten Daten in die Avro-Dateiausgabe zu schreiben.