Comment utiliser Apache Beam pour implémenter une interface et une architecture unifiées pour le traitement par lots et par flux dans le développement PHP

王林
Libérer: 2023-06-25 18:50:02
original
1471 Les gens l'ont consulté

À mesure que la quantité de données continue de croître et que les exigences en matière de traitement des données deviennent de plus en plus complexes, les méthodes traditionnelles de traitement des données pourraient ne plus être en mesure de répondre aux besoins de la société moderne. En réponse à ce problème, Google propose un nouveau cadre de traitement de données unifié - Apache Beam, qui modifie l'approche traditionnelle et fournit une solution pouvant utiliser le même ensemble d'API et la même architecture dans le traitement par lots et le traitement par flux.

Dans cet article, nous verrons comment utiliser Apache Beam pour implémenter une interface et une architecture unifiées pour le traitement par lots et par flux dans le développement PHP.

Qu'est-ce qu'Apache Beam

Apache Beam est un framework de traitement de Big Data open source qui permet aux développeurs d'utiliser une interface de programmation unique pour mettre en œuvre un traitement de données distribué. L'objectif principal d'Apache Beam est de fournir une interface et une architecture unifiées afin que le traitement par lots et le traitement par flux puissent être traités à l'aide de la même API. Cela permet aux développeurs de choisir différents moteurs de calcul pour différents besoins de traitement de données sans avoir à coder différemment pour différents moteurs de calcul.

Apache Beam peut être intégré à une variété de moteurs informatiques, tels qu'Apache Flink, Apache Spark, Google Cloud Dataflow, etc. Ainsi, les développeurs peuvent choisir le moteur informatique qui répond le mieux aux besoins de leur entreprise sans avoir à modifier leur code.

Avantages d'Apache Beam

Apache Beam offre une série d'avantages pour améliorer l'efficacité du traitement des données, réaliser rapidement le flux de données et améliorer la lisibilité du code. Voici les fonctionnalités obtenues avec l'aide d'Apache Beam :

Architecture de code unifiée

Apache Beam permet aux développeurs d'utiliser la même interface de programmation pour développer des programmes de traitement par lots et par flux, rendant ainsi l'architecture du code simple et facile à comprendre, améliorant ainsi la lisibilité du code Lisibilité. De plus, Apache Beam propose également une conception de code modulaire et extrait la logique de traitement du flux de données, permettant aux développeurs de se concentrer sur le traitement des données lui-même sans avoir à se soucier des détails du système sous-jacent.

Intégrez-vous à plusieurs moteurs informatiques

Apache Beam prend en charge l'intégration avec plusieurs moteurs informatiques, notamment Apache Flink, Apache Spark, Google Cloud Dataflow, etc. Les développeurs peuvent choisir le moteur informatique le plus adapté en fonction des besoins spécifiques de leur entreprise sans avoir à modifier le code. Cela fait d'Apache Beam un framework qui maintient la cohérence et la flexibilité dans différents scénarios.

Cadre hautement évolutif

L'architecture de traitement distribué d'Apache Beam lui permet de gérer de grandes quantités de données tout en étant hautement évolutive. Apache Beam présente des avantages évidents lors du traitement de grands ensembles de données, améliorant considérablement la vitesse grâce au traitement distribué.

Comment utiliser Apache Beam pour implémenter une interface et une architecture unifiées pour le traitement par lots et par flux

Afin de comprendre comment utiliser Apache Beam pour implémenter une interface et une architecture unifiées pour le traitement par lots et par flux, nous présenterons un exemple spécifique implémenté à l'aide d'Apache Beam, cet exemple extrait les données d'un fichier JSON et les écrit dans une base de données MySQL.

Étape 1 : Préparation

Avant d'utiliser Apache Beam, vous devez installer les bibliothèques et extensions dépendantes associées. En PHP, nous devons installer les extensions suivantes :

  • Extension gRPC
  • Extension protobuf

Ces deux extensions peuvent être installées via l'installateur PECL. Par exemple, sur un système Linux, il peut être installé avec la commande suivante :

sudo apt-get install -y php-pear curl php7.x-dev libcurl4-openssl-dev
sudo pecl install grpc protobuf
Copier après la connexion

Étape 2 : Installer Apache Beam et les bibliothèques associées

Veuillez confirmer que vous avez installé Composer avant d'installer Apache Beam.

Installez le composant Apache Beam en exécutant la commande suivante :

composer require apache/beam-php-sdk
Copier après la connexion

Étape 3 : Implémentez le pipeline Beam

Dans Apache Beam, le pipeline (Pipeline) est l'élément de base du flux de travail de traitement des données. Un pipeline se compose d'une série de PTransform (opérations de traitement) et de PCollection (collecte de données).

Dans cet exemple, nous devons utiliser trois PTransforms :

  • ReadFromText : lire les données d'un fichier JSON et les convertir en PCollection.
  • Carte : convertissez les données dans PCollection et convertissez les données au format JSON en un tableau associatif.
  • WriteToMySQL : écrivez des données dans la base de données MySQL.
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();
    }
}
Copier après la connexion

Étape 4 : Exécuter le pipeline Beam

Enfin, nous devons démarrer l'exécution du pipeline dans la fonction principale :

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

$pipeline = new JsonToMySqlPipeline($input, $output);
$pipeline->build();
$pipeline->run();
Copier après la connexion

Conclusion

Apache Beam simplifie l'utilisation du même ensemble d'API et d'architectures pour traitement par lots et par flux facile. Les pipelines créés avec Apache Beam peuvent être portables et exécutés sur plusieurs moteurs de calcul, faisant ainsi abstraction des différences dans les infrastructures sous-jacentes au flux de données. L'utilisation d'Apache Beam dans le développement PHP pour implémenter une interface et une architecture unifiées pour le traitement par lots et le traitement par flux peut améliorer l'efficacité du développement des programmeurs, tout en améliorant l'efficacité du traitement et l'évolutivité.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!