So verwenden Sie Java, um eine Flink-basierte Stream-Verarbeitungs- und Stapelverarbeitungsanwendung zu entwickeln
Zusammenfassung: Flink ist eine verteilte Stream-Verarbeitungs-Engine, die auf Ereigniszeit basiert und auch Stapelverarbeitung unterstützt. In diesem Artikel wird erläutert, wie Sie mithilfe der Java-Sprache eine Flink-basierte Stream- und Stapelverarbeitungsanwendung entwickeln und entsprechende Codebeispiele bereitstellen.
1. Hintergrundeinführung: Flink ist eine leistungsstarke und zuverlässige Stream-Verarbeitungs-Engine. Sie zeichnet sich durch geringe Latenz und hohen Durchsatz aus und kann eine Vielzahl von Szenarien wie unbegrenzten Datenfluss, Stapelverarbeitung und iterative Verarbeitung verarbeiten Rechnen. Flink bietet außerdem umfangreiche APIs und Tools sowie Integrationsunterstützung für Drittsysteme.
Zuerst müssen Sie Java Development Kit (JDK) und Apache Flink installieren. Stellen Sie sicher, dass die Umgebungsvariablen korrekt konfiguriert sind. Mit dem folgenden Befehl können Sie überprüfen, ob sie korrekt installiert ist:
java -version flink --version
Erstellen Sie zunächst ein neues Maven-Projekt und fügen Sie Flink-Abhängigkeiten hinzu. Fügen Sie der pom.xml-Datei den folgenden Inhalt hinzu:
<dependencies> <dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-streaming-java_2.11</artifactId> <version>1.9.3</version> </dependency> </dependencies>
In Flink heißt die Streaming-Datenquelle Quelle. Das Folgende ist ein Beispielcode, der über die Quellfunktion einen Datenstrom mit den Zahlen 1 bis 100 erstellt:
DataStream<Integer> stream = env.fromCollection(Arrays.asList(1, 2, 3, ..., 100));
Flink bietet eine Fülle von Konvertierungs- und Verarbeitungsfunktionen, mit denen verschiedene Vorgänge am Datenstrom ausgeführt werden können. Das Folgende ist ein Beispielcode, der zu jedem Element im Datenstrom 1 hinzufügt und gerade Zahlen herausfiltert:
DataStream<Integer> result = stream .map(new MapFunction<Integer, Integer>() { @Override public Integer map(Integer value) throws Exception { return value + 1; } }) .filter(new FilterFunction<Integer>() { @Override public boolean filter(Integer value) throws Exception { return value % 2 == 0; } });
Flink unterstützt die Ausgabe von Ergebnissen an verschiedene Ziele, wie Konsolen, Dateien, Datenbanken usw. Das Folgende ist ein Beispielcode, der die Ergebnisse an die Konsole ausgibt:
result.print();
Führen Sie abschließend die Stream-Verarbeitungsanwendung über die Ausführungsfunktion aus:
env.execute("Stream Processing Job");
In ähnlicher Weise fügen Sie in Maven Flink-Abhängigkeiten zum Projekt hinzu.
4.2 Datenquelle
Die Datenquelle der Stapelverarbeitungsanwendung verwendet DataSet. Das Folgende ist ein Beispielcode, der über die fromElements-Funktion einen Datensatz mit Zeichenfolgen erstellt:
ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment(); DataSet<String> dataSet = env.fromElements("Hello", "World");
4.3 Datenkonvertierung und -verarbeitung
Flink bietet Konvertierungs- und Verarbeitungsfunktionen ähnlich der Stream-Verarbeitung, mit denen verschiedene Vorgänge am Datensatz ausgeführt werden können. Hier ist ein Beispielcode, der jede Zeichenfolge im Datensatz in Großbuchstaben umwandelt und Zeichenfolgen mit einer Länge von mehr als 3 herausfiltert:
DataSet<String> result = dataSet .map(new MapFunction<String, String>() { @Override public String map(String value) throws Exception { return value.toUpperCase(); } }) .filter(new FilterFunction<String>() { @Override public boolean filter(String value) throws Exception { return value.length() > 3; } });
4.4 Ergebnisausgabe
Ähnlich wie Stream-Verarbeitungsanwendungen unterstützen Stapelverarbeitungsanwendungen auch die Ausgabe von Ergebnissen an unterschiedliche Ziele.
4.5 Führen Sie Stapelverarbeitungsanwendungen aus. Führen Sie Stapelverarbeitungsanwendungen aus, indem Sie die Ausführungsfunktion aufrufen:
result.print();
Das obige ist der detaillierte Inhalt vonWie man mit Java eine Flink-basierte Stream-Verarbeitungs- und Stapelverarbeitungsanwendung entwickelt. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!