Python-Flink-Tutorial

Python-Flink-Tutorial

In diesem Tutorial erfahren Sie, wie Sie Apache Flink, ein Open-Source-Stream-Verarbeitungs- und Stapelverarbeitungs-Framework, unter Verwendung der Programmiersprache Python bedienen und verwenden. In diesem Tutorial erfahren Sie, wie Sie mit der Python-Flink-API Streaming- und Batch-Anwendungen erstellen.

Umgebungseinstellungen

Bevor Sie beginnen, müssen Sie die folgende Software und Bibliotheken installieren:

  • Python 3.x
  • Apache Flink 1.10.x
  • Apache Beam 2.23.x
  • PyFlink 1.10.x

Sie können PyFlink mit dem folgenden Befehl installieren:

pip install apache-flink

Beginnen Sie mit der Verwendung

Stream-Verarbeitung

Erstellen Sie einen Stream-Verarbeitungsauftrag

Zuerst müssen wir die notwendigen Bibliotheken importieren:

from pyflink.common.serialization import SimpleStringEncoder
from pyflink.common.typeinfo import Types
from pyflink.datastream import StreamExecutionEnvironment
from pyflink.datastream.connectors import FlinkKafkaConsumer
from pyflink.datastream.functions import KeyedProcessFunction
from pyflink.table import StreamTableEnvironment

Dann müssen wir eine Stream-Verarbeitungsumgebung erstellen:

env = StreamExecutionEnvironment.get_execution_environment()
env.set_parallelism(1)
t_env = StreamTableEnvironment.create(env)

Holen Sie sich Daten von Kafka

Als Nächstes rufen wir Daten aus einem Kafka-Thema ab. Zuerst müssen wir einen Kafka-Konsumenten erstellen:

properties = {
    
    
    'bootstrap.servers': 'localhost:9092',
    'group.id': 'test-group'
}

kafka_consumer = FlinkKafkaConsumer(
    'test-topic',
    SimpleStringEncoder(),
    properties=properties
)

Anschließend können wir add_source()diesen Verbraucher mit der folgenden Methode zur Stream-Verarbeitungsumgebung hinzufügen:

stream = env.add_source(kafka_consumer)

Daten konvertieren

Sobald wir die Daten aus dem Kafka-Thema erhalten, können wir die Daten transformieren und verarbeiten. Zum Beispiel können wir map()die Methode verwenden, um die Daten aufzuteilen:

stream = stream.map(lambda x: (x.split(',')[0], int(x.split(',')[1])))

Verarbeitungslogik definieren

Als nächstes können wir eine Verarbeitungslogikfunktion definieren, zum Beispiel:

class MyProcessFunction(KeyedProcessFunction):
    def process_element(self, value, ctx):
        ctx.output(value[0], value[1])

Anschließend können wir process()mithilfe der folgenden Methode Verarbeitungslogik auf den Stream anwenden:

stream.process(MyProcessFunction())

Ausgabeergebnis

Schließlich können wir print()das Ergebnis mit der folgenden Methode ausdrucken:

stream.print()

Auftrag ausführen

Schließlich können wir execute()die Methode verwenden, um den Stream-Verarbeitungsjob auszuführen:

env.execute('My Stream Job')

Stapelverarbeitung

Erstellen Sie einen Batch-Job

Zuerst müssen wir die notwendigen Bibliotheken importieren:

from pyflink.table import BatchTableEnvironment, EnvironmentSettings

Dann müssen wir eine Batch-Umgebung erstellen:

env_settings = EnvironmentSettings.new_instance().in_batch_mode().use_blink_planner().build()
t_env = BatchTableEnvironment.create(environment_settings=env_settings)

Daten lesen

Als nächstes können wir read_csv()mit der Methode Daten aus der CSV-Datei lesen:

source = t_env.read_csv('data.csv', schema='name STRING, age INT')

Daten konvertieren

Sobald wir die Daten gelesen haben, können wir die Daten transformieren und verarbeiten. Mit der Methode können wir beispielsweise filter()Daten herausfiltern, deren Alter größer als 18 ist:

result = source.filter('age > 18')

Ausgabeergebnis

Schließlich können wir to_pandas()die Methode verwenden, um das Ergebnis in einen Pandas DataFrame zu konvertieren und auszudrucken:

result.to_pandas().head()

Auftrag ausführen

Schließlich können wir execute()die Methode verwenden, um Batch-Jobs auszuführen:

t_env.execute('My Batch Job')

Zusammenfassen

In diesem Tutorial haben wir gelernt, wie man die Python-Flink-API zum Erstellen von Streaming- und Batch-Anwendungen verwendet. Wir haben gelernt, wie man Streaming- und Batch-Jobs erstellt, wie man Daten von Kafka erhält, wie man die Daten transformiert und verarbeitet und wie man die Ergebnisse ausgibt. Ich hoffe, dieses Tutorial hilft Ihnen!

おすすめ

転載: blog.csdn.net/sinat_35773915/article/details/132085275