ホームページ  >  記事  >  バックエンド開発  >  Apache Beam を使用して、PHP 開発におけるバッチおよびストリーム処理用の統合インターフェイスとアーキテクチャを実装する方法

Apache Beam を使用して、PHP 開発におけるバッチおよびストリーム処理用の統合インターフェイスとアーキテクチャを実装する方法

王林
王林オリジナル
2023-06-25 18:48:111472ブラウズ

データ量が増加し続け、データ処理要件がますます複雑になるにつれて、従来のデータ処理方法では現代社会のニーズを満たすことができなくなる可能性があります。この問題に対処するために、Google は新しい統合データ処理フレームワークである Apache Beam を提供しています。これは、従来のアプローチを変更し、バッチ処理とストリーム処理で同じ API とアーキテクチャを使用できるソリューションを提供します。

この記事では、Apache Beam を使用して、PHP 開発におけるバッチ処理とストリーム処理のための統合インターフェイスとアーキテクチャを実装する方法を詳しく説明します。

Apache Beam とは

Apache Beam は、開発者が単一のプログラミング インターフェイスを使用して分散データ処理を実装できるようにするオープン ソースのビッグ データ処理フレームワークです。 Apache Beam の主な目標は、バッチ処理とストリーム処理を同じ API を使用して処理できるように、統一されたインターフェイスとアーキテクチャを提供することです。これにより、開発者は、コンピューティング エンジンごとに異なるコードを作成することなく、さまざまなデータ処理ニーズに応じて異なるコンピューティング エンジンを選択できるようになります。

Apache Beam は、Apache Flink、Apache Spark、Google Cloud Dataflow などのさまざまなコンピューティング エンジンと統合できます。したがって、開発者はコードを変更することなく、ビジネス ニーズに最適なコンピューティング エンジンを選択できます。

Apache Beam の利点

Apache Beam は、データ処理効率を向上させ、データ フローを迅速に実現し、コードの可読性を向上させる一連の利点を提供します。 Apache Beam を利用して実装された機能は次のとおりです。

統一コード アーキテクチャ

Apache Beam を使用すると、開発者は同じプログラミング インターフェイスを使用してバッチおよびストリーム処理プログラムを開発できるため、コード アーキテクチャがシンプルになります。理解しやすくなり、コードの可読性が向上します。さらに、Apache Beam はモジュール式のコード設計も提供し、データ フローから処理ロジックを抽象化することで、開発者は基盤となるシステムの詳細を気にすることなくデータ処理自体に集中できるようになります。

複数のコンピューティング エンジンとの統合

Apache Beam は、Apache Flink、Apache Spark、Google Cloud Dataflow などの複数のコンピューティング エンジンとの統合をサポートしています。開発者は、コードを変更することなく、特定のビジネス ニーズに基づいて最適なコンピューティング エンジンを選択できます。これにより、Apache Beam はさまざまなシナリオで一貫性と柔軟性を維持するフレームワークになります。

スケーラビリティの高いフレームワーク

Apache Beam の分散処理アーキテクチャにより、スケーラビリティが高く、大量のデータを処理できます。 Apache Beam には、大規模なデータ セットを処理する場合に明らかな利点があり、分散処理によって速度が大幅に向上します。

Apache Beam を使用してバッチ処理とストリーム処理の統合インターフェイスとアーキテクチャを実装する方法

Apache Beam を使用してバッチ処理とストリーム処理の統合インターフェイスとアーキテクチャを実装する方法を理解するにはでは、JSON ファイルからデータを抽出して MySQL データベースに書き込む Apache Beam 実装の具体的な使用例を紹介します。

ステップ 1: 準備

Apache Beam を使用する前に、関連する依存ライブラリと拡張機能をインストールする必要があります。 PHP では、次の拡張機能をインストールする必要があります。

  • gRPC 拡張機能
  • protobuf 拡張機能

#これら 2 つの拡張機能は、PECL インストーラーを通じてインストールできます。たとえば、Linux システムでは、次のコマンドを使用してインストールできます。

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

ステップ 2: Apache Beam と関連ライブラリをインストールする

Apache Beam をインストールする前に、Composer がインストールされていることを確認してください。 。

次のコマンドを実行して、Apache Beam コンポーネントをインストールします。

composer require apache/beam-php-sdk

ステップ 3: Beam パイプラインを実装する

Apache Beam では、パイプライン (パイプライン) が基礎となります。データ処理ワークフローの構成要素。パイプラインは、一連の PTransform (処理操作) と PCollection (データ収集) で構成されます。

この例では、3 つの PTransform を使用する必要があります。

  • ReadFromText: JSON ファイルからデータを読み取り、PCollection に変換します。
  • Map: PCollection のデータを変換し、JSON 形式のデータを連想配列に変換します。
  • WriteToMySQL: 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();
    }
}

ステップ 4: Beam パイプラインを実行する

最後に、メイン関数でパイプラインの実行を開始する必要があります:

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

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

結論

Apache Beam を使用すると、バッチ処理とストリーム処理に同じ API とアーキテクチャを簡単に使用できます。 Apache Beam で作成されたパイプラインは移植可能であり、複数のコンピューティング エンジン間で実行できるため、データ フローの基礎となるフレームワークの違いが抽象化されます。 PHP 開発で Apache Beam を使用して、バッチ処理とストリーム処理のための統一されたインターフェイスとアーキテクチャを実装すると、プログラマーの開発効率が向上すると同時に、処理効率とスケーラビリティも向上します。

以上がApache Beam を使用して、PHP 開発におけるバッチおよびストリーム処理用の統合インターフェイスとアーキテクチャを実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。