Maison >développement back-end >tutoriel php >Comment utiliser PHP et Google Cloud Dataflow pour le traitement et la gestion des données en streaming

Comment utiliser PHP et Google Cloud Dataflow pour le traitement et la gestion des données en streaming

王林
王林original
2023-06-25 08:07:391027parcourir

Avec l'avènement de l'ère de l'explosion de l'information, l'utilisation et le traitement des données sont devenus de plus en plus importants. Le traitement des données en streaming est devenu l’un des moyens importants de traiter des données massives. En tant que développeur PHP, vous devez avoir une expérience et des besoins en matière de traitement de données en temps réel. Cet article explique comment utiliser PHP et Google Cloud Dataflow pour le traitement et la gestion des données en streaming.

1. Introduction à Google Cloud Dataflow

Google Cloud Dataflow est un service cloud qui gère des tâches de traitement de données à grande échelle, tout en permettant également de mélanger le traitement par lots et le traitement par flux. utiliser.

Google Cloud Dataflow présente les caractéristiques suivantes :

  1. Il s'étendra automatiquement lorsque la mémoire d'un seul nœud n'est pas suffisante
  2. Il peut masquer l'abstraction sous-jacente aux utilisateurs, leur permettant ainsi d'écrire du code plus facilement
  3. Pas besoin de créer ou gérer un cluster Le traitement des données
  4. prend en charge plusieurs langues

2. Créez un projet Google Cloud Dataflow et configurez l'environnement

  1. Créez un projet Google Cloud

Vous devez d'abord créer un projet Google Cloud .

  1. Installer le SDK Google Cloud

Vous devez installer le SDK Google Cloud pour utiliser Google Cloud Dataflow. Téléchargez le package d'installation et suivez les invites pour terminer l'installation.

  1. Définir les variables d'environnement

Utilisez la commande suivante pour définir les variables d'environnement sur le projet Google Cloud actuel :

$ gcloud config set project [PROJECT_ID]

3. Installez les extensions PHP nécessaires

Pour utiliser le service Dataflow en PHP, vous devez installez les extensions suivantes :

  1. Extension GRPC 下 Utilisez la commande suivante pour installer l'extension GRPC :
  2. Extension R
    $ pecl install grpc
    EE

PROTOBUF

  1. Utilisez les commandes suivantes pour installer l'extension Protobuf :
  2. $ pecl install protobuf
    EE

Extension PHP DAFLOW

  1. Utilisez le commande suivante pour installer l'extension PHP DataFlow :
  2. Rreee
Quatre, Écrivez le code de traitement du flux de données

Ce qui suit est un exemple, qui peut recevoir des messages du sujet Pub/Sub et les transmettre au pipeline de traitement Dataflow. les résultats sont écrits dans la table BigQuery :

$ pecl install google-cloud-dataflow-alpha

5. Exécutez le pipeline de traitement Dataflow

Utilisez la commande suivante pour exécuter le pipeline de traitement Dataflow :

<?php
require __DIR__ . '/vendor/autoload.php';

use GoogleCloudBigQueryBigQueryClient;
use GoogleCloudDataflowDataflowClient;
use GoogleCloudDataflowPubSubPubSubOptions;
use GoogleCloudPubSubPubSubClient;
use GoogleCloudDataflowOptions;

$configs = include __DIR__ . '/config.php';

$inputTopic = $configs['input_topic'];
$outputTable = $configs['output_table'];
$project = $configs['project_id'];
$bucket = $configs['bucket'];
$stagingLocation = $configs['staging_location'];
$tempLocation = $configs['temp_location'];
$jobName = 'test-job';

$options = [
    'project' => $project,
    'stagingLocation' => $stagingLocation,
    'tempLocation' => $tempLocation,
    'jobName' => $jobName,
];

$pubsub = new PubSubClient([
    'projectId' => $project
]);

$pubsub_topic = $pubsub->topic($inputTopic);

$bigquery = new BigQueryClient([
    'projectId' => $project
]);

$dataset = $bigquery->dataset('test_dataset');
$table = $dataset->table($outputTable);

$table->create([
    'schema' => [
        [
            'name' => 'id',
            'type' => 'STRING',
        ],
        [
            'name' => 'timestamp',
            'type' => 'TIMESTAMP',
        ],
        [
            'name' => 'message',
            'type' => 'STRING',
        ],
    ],
]);

$dataflow = new DataflowClient();

$pubsubOptions = PubSubOptions::fromArray([
    'topic' => sprintf('projects/%s/topics/%s', $project, $inputTopic),
]);

$options = [
    Options::PROJECT => $project,
    Options::STAGING_LOCATION => $stagingLocation,
    Options::TEMP_LOCATION => $tempLocation,
    Options::JOB_NAME => $jobName,
];

$job = $dataflow->createJob([
    'projectId' => $project,
    'name' => $jobName,
    'environment' => [
        'tempLocation' => sprintf('gs://%s/temp', $bucket),
    ],
    'steps' => [
        [
            'name' => 'Read messages from Pub/Sub',
            'pubsubio' => (new GoogleCloudDataflowIoPubsubPubsubMessage())
                ->expand($pubsubOptions)
                ->withAttributes(false)
                ->withIdAttribute('unique_id')
                ->withTimestampAttribute('publish_time')
        ],
        [
            'name' => 'Write messages to BigQuery',
            'bigquery' => (new GoogleCloudDataflowIoBigQueryBigQueryWrite())
                ->withJsonSchema(file_get_contents(__DIR__ . '/schema.json'))
                ->withTable($table->tableId())
        ],
    ]
]);

$operation = $job->run();

# Poll the operation until it is complete
$operation->pollUntilComplete();

if (!$operation->isComplete()) {
    exit(1);
}

if ($operation->getError()) {
    print_r($operation->getError());
    exit(1);
}

echo "Job has been launched";

6. Surveillance et gestion des pipelines de traitement des données

Google Cloud Console fournit une page Dataflow qui peut être utilisée pour afficher et gérer les pipelines de traitement des données.

7. Résumé

Cet article explique comment utiliser PHP et Google Cloud Dataflow pour le traitement et la gestion des flux de données, de la création d'un projet Google Cloud à la configuration de l'environnement, en passant par l'installation des extensions PHP nécessaires, l'écriture du code de traitement des flux de données et L'exécution de Dataflow Processing Pipeline, ainsi que la surveillance et la gestion des pipelines de traitement de données, présentent en détail le processus et les étapes de Dataflow, dans l'espoir d'être utiles à tout le monde.

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!

Déclaration:
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