Heim  >  Artikel  >  Backend-Entwicklung  >  So implementieren Sie mit Apache Beam eine einheitliche Schnittstelle und Architektur für die Batch- und Stream-Verarbeitung in der PHP-Entwicklung

So implementieren Sie mit Apache Beam eine einheitliche Schnittstelle und Architektur für die Batch- und Stream-Verarbeitung in der PHP-Entwicklung

王林
王林Original
2023-06-25 18:48:111474Durchsuche

Da die Datenmenge weiter wächst und die Anforderungen an die Datenverarbeitung immer komplexer werden, können herkömmliche Datenverarbeitungsmethoden möglicherweise nicht mehr den Anforderungen der modernen Gesellschaft gerecht werden. Als Reaktion auf dieses Problem stellt Google ein neues, einheitliches Datenverarbeitungs-Framework bereit – Apache Beam, das den traditionellen Ansatz ändert und eine Lösung bereitstellt, die bei der Stapelverarbeitung und Stream-Verarbeitung die gleichen APIs und Architekturen verwenden kann.

In diesem Artikel befassen wir uns mit der Verwendung von Apache Beam zur Implementierung einer einheitlichen Schnittstelle und Architektur für die Batch- und Stream-Verarbeitung in der PHP-Entwicklung.

Was ist Apache Beam?

Apache Beam ist ein Open-Source-Framework für die Big-Data-Verarbeitung, das es Entwicklern ermöglicht, eine einzige Programmierschnittstelle zu verwenden, um verteilte Datenverarbeitung zu implementieren. Das Hauptziel von Apache Beam besteht darin, eine einheitliche Schnittstelle und Architektur bereitzustellen, sodass Stapelverarbeitung und Stream-Verarbeitung mit derselben API verarbeitet werden können. Dadurch können Entwickler unterschiedliche Computer-Engines für unterschiedliche Datenverarbeitungsanforderungen auswählen, ohne für verschiedene Computer-Engines unterschiedlich programmieren zu müssen.

Apache Beam kann in eine Vielzahl von Computer-Engines integriert werden, wie z. B. Apache Flink, Apache Spark, Google Cloud Dataflow usw. Daher können Entwickler die Computer-Engine auswählen, die ihren Geschäftsanforderungen am besten entspricht, ohne ihren Code ändern zu müssen.

Vorteile von Apache Beam

Apache Beam bietet eine Reihe von Vorteilen, um die Effizienz der Datenverarbeitung zu verbessern, den Datenfluss schnell zu realisieren und die Lesbarkeit des Codes zu verbessern. Die folgenden Funktionen werden mit Hilfe von Apache Beam erreicht:

Einheitliche Code-Architektur

Apache Beam ermöglicht es Entwicklern, dieselbe Programmierschnittstelle zum Entwickeln von Batch- und Stream-Verarbeitungsprogrammen zu verwenden, wodurch die Code-Architektur einfach und leicht verständlich wird und sich verbessert die Lesbarkeit des Codes Lesbarkeit. Darüber hinaus bietet Apache Beam auch ein modulares Codedesign und abstrahiert die Verarbeitungslogik vom Datenfluss, sodass sich Entwickler auf die Datenverarbeitung selbst konzentrieren können, ohne sich um die zugrunde liegenden Systemdetails kümmern zu müssen.

Integration mit mehreren Computer-Engines

Apache Beam unterstützt die Integration mit mehreren Computer-Engines, einschließlich Apache Flink, Apache Spark, Google Cloud Dataflow usw. Entwickler können basierend auf spezifischen Geschäftsanforderungen die am besten geeignete Computer-Engine auswählen, ohne den Code ändern zu müssen. Dies macht Apache Beam zu einem Framework, das in verschiedenen Szenarien Konsistenz und Flexibilität gewährleistet.

Hoch skalierbares Framework

Die verteilte Verarbeitungsarchitektur von Apache Beam ermöglicht die Verarbeitung großer Datenmengen und ist gleichzeitig hoch skalierbar. Apache Beam bietet offensichtliche Vorteile bei der Verarbeitung großer Datenmengen und verbessert die Geschwindigkeit durch verteilte Verarbeitung erheblich.

So verwenden Sie Apache Beam, um eine einheitliche Schnittstelle und Architektur für die Stapel- und Stream-Verarbeitung zu implementieren

Um zu verstehen, wie Sie Apache Beam verwenden, um eine einheitliche Schnittstelle und Architektur für die Stapel- und Stream-Verarbeitung zu implementieren, stellen wir ein konkretes implementiertes Beispiel vor Mit Apache Beam extrahiert dieses Beispiel Daten aus einer JSON-Datei und schreibt sie in eine MySQL-Datenbank.

Schritt 1: Vorbereitung

Bevor Sie Apache Beam verwenden, müssen Sie zugehörige abhängige Bibliotheken und Erweiterungen installieren. In PHP müssen wir die folgenden Erweiterungen installieren:

  • gRPC-Erweiterung
  • protobuf-Erweiterung

Diese beiden Erweiterungen können über das PECL-Installationsprogramm installiert werden. Auf einem Linux-System kann es beispielsweise mit dem folgenden Befehl installiert werden:

sudo apt-get install -y php-pear curl php7.x-dev libcurl4-openssl-dev
sudo pecl install grpc protobuf

Schritt 2: Apache Beam und zugehörige Bibliotheken installieren

Bitte bestätigen Sie, dass Sie Composer installiert haben, bevor Sie Apache Beam installieren.

Installieren Sie die Apache Beam-Komponente, indem Sie den folgenden Befehl ausführen:

composer require apache/beam-php-sdk

Schritt 3: Implementieren Sie die Beam-Pipeline

In Apache Beam ist die Pipeline (Pipeline) der Grundbaustein des Datenverarbeitungsworkflows. Eine Pipeline besteht aus einer Reihe von PTransform (Verarbeitungsvorgängen) und PCollection (Datenerfassung).

In diesem Beispiel müssen wir drei PTransforms verwenden:

  • ReadFromText: Daten aus einer JSON-Datei lesen und in eine PCollection konvertieren.
  • Map: Konvertieren Sie die Daten in PCollection und konvertieren Sie die Daten im JSON-Format in ein assoziatives Array.
  • WriteToMySQL: Daten in die MySQL-Datenbank schreiben.
use ApacheBeamCreate;
use ApacheBeamExamplesCompleteJSONToMySQLJSONToMySQLMySQLConfiguration;
use ApacheBeamPipelineBuilder;

class JsonToMySqlPipeline
{
    private $pipelineBuilder;
    private $input;
    private $output;

    public function __construct($input, $output)
    {
        $this->pipelineBuilder = new PipelineBuilder([
            'appName' => 'json-to-mysql-pipeline'
        ]);
        $this->input = $input;
        $this->output = $output;
    }

    public function build()
    {
        $this->pipelineBuilder
            ->apply(Create::fromArray([[$this->input]]))
            ->apply(
                'Transform JSON to Associative Array',
                MapElements::into(
                    DataTypes::ARRAY(
                        DataTypes::STRING(), DataTypes::STRING()
                    )
                )->via(
                    function ($json) {
                        $data = json_decode($json, true);
                        return [
                            'name' => $data['name'],
                            'age' => $data['age']
                        ];
                    }
                )
            )
            ->apply(
                'Write to MySQL',
                new WriteToMySQL(
                    $this->output,
                    new MySQLConfiguration(
                        $host = 'localhost',
                        $port = '3306',
                        $user = 'root',
                        $password = '',
                        $database = 'beam',
                        $table = 'users'
                    )
                )
            );
    }

    public function run()
    {
        $this->pipelineBuilder->run();
    }
}

Schritt 4: Führen Sie die Beam-Pipeline aus

Schließlich müssen wir die Ausführung der Pipeline in der Hauptfunktion starten:

$input = 'data/users.json';
$output = 'mysql';

$pipeline = new JsonToMySqlPipeline($input, $output);
$pipeline->build();
$pipeline->run();

Fazit

Apache Beam macht es einfach, denselben Satz von APIs und Architekturen für zu verwenden Batch- und Stream-Verarbeitung einfach. Mit Apache Beam erstellte Pipelines können portierbar sein und über mehrere Rechen-Engines hinweg ausgeführt werden, wodurch Unterschiede in den zugrunde liegenden Frameworks für den Datenfluss abstrahiert werden. Der Einsatz von Apache Beam in der PHP-Entwicklung zur Implementierung einer einheitlichen Schnittstelle und Architektur für die Stapelverarbeitung und Stream-Verarbeitung kann die Entwicklungseffizienz von Programmierern verbessern und gleichzeitig die Verarbeitungseffizienz und Skalierbarkeit verbessern.

Das obige ist der detaillierte Inhalt vonSo implementieren Sie mit Apache Beam eine einheitliche Schnittstelle und Architektur für die Batch- und Stream-Verarbeitung in der PHP-Entwicklung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn