Memandangkan jumlah data terus berkembang dan keperluan pemprosesan data menjadi semakin kompleks, kaedah pemprosesan data tradisional mungkin tidak lagi dapat memenuhi keperluan masyarakat moden. Sebagai tindak balas kepada masalah ini, Google menyediakan rangka kerja pemprosesan data bersatu baharu - Apache Beam, yang mengubah pendekatan tradisional dan menyediakan penyelesaian yang boleh menggunakan set API dan seni bina yang sama dalam pemprosesan kelompok dan pemprosesan strim.
Dalam artikel ini, kami akan menyelidiki cara menggunakan Apache Beam untuk melaksanakan antara muka dan seni bina bersatu untuk pemprosesan kelompok dan strim dalam pembangunan PHP.
Apache Beam ialah rangka kerja pemprosesan data besar sumber terbuka yang membolehkan pembangun menggunakan antara muka pengaturcaraan tunggal untuk melaksanakan pemprosesan data teragih. Matlamat utama Apache Beam adalah untuk menyediakan antara muka dan seni bina bersatu supaya pemprosesan kelompok dan pemprosesan strim boleh diproses menggunakan API yang sama. Ini membolehkan pembangun memilih enjin pengkomputeran yang berbeza untuk keperluan pemprosesan data yang berbeza tanpa perlu mengekod secara berbeza untuk enjin pengkomputeran yang berbeza.
Apache Beam boleh disepadukan dengan pelbagai enjin pengkomputeran, seperti Apache Flink, Apache Spark, Google Cloud Dataflow, dll. Oleh itu, pembangun boleh memilih enjin pengkomputeran yang paling sesuai dengan keperluan perniagaan mereka tanpa perlu menukar kod mereka.
Apache Beam menyediakan satu siri kelebihan untuk meningkatkan kecekapan pemprosesan data, merealisasikan aliran data dengan cepat dan meningkatkan kebolehbacaan kod. Berikut adalah ciri-ciri yang dicapai dengan bantuan Apache Beam:
Apache Beam membolehkan pembangun menggunakan antara muka pengaturcaraan yang sama untuk membangunkan program pemprosesan kelompok dan strim, sekali gus menjadikan seni bina kod mudah dan mudah difahami, menambah baik kebolehbacaan kod Kebolehbacaan. Selain itu, Apache Beam juga menyediakan reka bentuk kod modular dan mengabstrak logik pemprosesan daripada aliran data, membolehkan pembangun menumpukan pada pemprosesan data itu sendiri tanpa perlu mengambil berat tentang butiran sistem yang mendasari.
Apache Beam menyokong penyepaduan dengan berbilang enjin pengkomputeran, termasuk Apache Flink, Apache Spark, Google Cloud Dataflow, dsb. Pembangun boleh memilih enjin pengkomputeran yang paling sesuai berdasarkan keperluan perniagaan tertentu tanpa perlu menukar kod. Ini menjadikan Apache Beam sebagai rangka kerja yang mengekalkan konsistensi dan fleksibiliti dalam senario yang berbeza.
Seni bina pemprosesan teragih Apache Beam membolehkannya mengendalikan sejumlah besar data sambil juga sangat berskala. Apache Beam mempunyai kelebihan yang jelas apabila memproses set data yang besar, meningkatkan kelajuan melalui pemprosesan yang diedarkan.
Untuk memahami cara menggunakan Apache Beam untuk melaksanakan antara muka dan seni bina bersatu untuk pemprosesan kelompok dan strim, kami akan memperkenalkan contoh khusus yang dilaksanakan menggunakan Apache Beam, Contoh ini mengekstrak data daripada fail JSON dan menulisnya ke pangkalan data MySQL.
Sebelum menggunakan Apache Beam, anda perlu memasang perpustakaan dan sambungan bergantung yang berkaitan. Dalam PHP, kita perlu memasang sambungan berikut:
Dua sambungan ini boleh dipasang melalui pemasang PECL. Sebagai contoh, pada sistem Linux ia boleh dipasang dengan arahan berikut:
sudo apt-get install -y php-pear curl php7.x-dev libcurl4-openssl-dev sudo pecl install grpc protobuf
Sila sahkan bahawa anda telah memasang Komposer sebelum memasang Apache Beam.
Pasang komponen Apache Beam dengan melaksanakan arahan berikut:
composer require apache/beam-php-sdk
Dalam Apache Beam, saluran paip (Pipeline) ialah blok binaan asas aliran kerja pemprosesan data. Saluran paip terdiri daripada satu siri PTransform (operasi pemprosesan) dan PCollection (pengumpulan data).
Dalam contoh ini, kita perlu menggunakan tiga PTransforms:
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(); } }
Akhir sekali, kita perlu memulakan pelaksanaan saluran paip dalam fungsi utama:
$input = 'data/users.json'; $output = 'mysql'; $pipeline = new JsonToMySqlPipeline($input, $output); $pipeline->build(); $pipeline->run();
Apache Beam menjadikannya mudah untuk menggunakan set API dan seni bina yang sama pemprosesan batch dan strim mudah. Saluran paip yang dibuat dengan Apache Beam boleh mudah alih dan dijalankan merentasi berbilang enjin pengiraan, mengabstrak perbezaan dalam rangka kerja asas untuk aliran data. Menggunakan Apache Beam dalam pembangunan PHP untuk melaksanakan antara muka dan seni bina bersatu untuk pemprosesan kelompok dan pemprosesan strim boleh meningkatkan kecekapan pembangunan pengaturcara, di samping meningkatkan kecekapan pemprosesan dan skalabiliti.
Atas ialah kandungan terperinci Cara menggunakan Apache Beam untuk melaksanakan antara muka dan seni bina bersatu untuk pemprosesan kelompok dan strim dalam pembangunan PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!