Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Cara menggunakan Apache Beam untuk melaksanakan antara muka dan seni bina bersatu untuk pemprosesan kelompok dan strim dalam pembangunan PHP

Cara menggunakan Apache Beam untuk melaksanakan antara muka dan seni bina bersatu untuk pemprosesan kelompok dan strim dalam pembangunan PHP

王林
王林asal
2023-06-25 18:48:111474semak imbas

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.

Apakah itu Apache Beam

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.

Kelebihan Apache Beam

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:

Seni bina kod bersatu

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.

Sepadukan dengan berbilang enjin pengkomputeran

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.

Rangka kerja berskala tinggi

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.

Cara menggunakan Apache Beam untuk melaksanakan antara muka dan seni bina bersatu untuk pemprosesan kelompok dan strim

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.

Langkah 1: Penyediaan

Sebelum menggunakan Apache Beam, anda perlu memasang perpustakaan dan sambungan bergantung yang berkaitan. Dalam PHP, kita perlu memasang sambungan berikut:

  • gRPC sambungan
  • protobuf sambungan

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

Langkah 2: Pasang Apache Beam dan perpustakaan berkaitan

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

Langkah 3: Laksanakan saluran paip Beam

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:

  • ReadFromText: Baca data daripada fail JSON dan tukarkannya menjadi PCollection.
  • Peta: Tukar data dalam PCollection dan tukar data format JSON kepada tatasusunan bersekutu.
  • WriteToMySQL: Tulis data ke pangkalan data 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();
    }
}

Langkah 4: Laksanakan saluran paip Beam

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();

Kesimpulan

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn