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

王林
リリース: 2023-06-25 18:50:02
オリジナル
1462 人が閲覧しました

データ量が増加し続け、データ処理要件がますます複雑になるにつれて、従来のデータ処理方法では現代社会のニーズを満たすことができなくなる可能性があります。この問題に対処するために、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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!