All Products
Search
Document Center

Simple Log Service:Implementasi Penyaringan Baris dan Pemangkasan Kolom oleh Flink SQL Menggunakan Pernyataan SPL

Last Updated:Jul 06, 2025

Topik ini menjelaskan bagaimana Alibaba Cloud Flink SQL mengimplementasikan penyaringan baris dan pemangkasan kolom dengan menggunakan pernyataan Simple Log Service Processing Language (SPL).

Latar Belakang

Ketika Anda mengonfigurasi Simple Log Service sebagai tabel sumber dalam Realtime Compute for Apache Flink, data di Logstore dari Simple Log Service dikonsumsi secara otomatis untuk membangun tabel dinamis. Anda dapat menentukan waktu mulai untuk konsumsi data. Data yang dihasilkan setelah waktu mulai tersebut akan dikonsumsi. Dua masalah mungkin muncul:

  1. Konektor Simple Log Service menarik terlalu banyak baris atau kolom data yang tidak diperlukan, menyebabkan overhead jaringan.

  2. Data yang tidak diperlukan harus dibersihkan di Realtime Compute for Apache Flink, tetapi pembersihan data bukan fokus analisis data dan mengonsumsi sumber daya komputasi tambahan. Pembersihan data melibatkan penyaringan dan proyeksi data.

SPL memberikan konektor Simple Log Service kemampuan dorongan filter dan dorongan proyeksi. Anda dapat menentukan pernyataan kueri untuk konektor Simple Log Service untuk mengaktifkan dorongan kondisi filter atau mengonfigurasi parameter kueri untuk konektor Simple Log Service untuk mengaktifkan dorongan bidang proyeksi. Pengaturan ini mencegah transmisi atau komputasi data penuh dan meningkatkan efisiensi transmisi serta komputasi data.

Solusi

  • Tidak ada pernyataan SPL yang ditentukan: Realtime Compute for Apache Flink menarik log penuh dari Simple Log Service, termasuk semua baris dan kolom.

  • Pernyataan SPL ditentukan: Jika pengaturan penyaringan baris atau pemangkasan kolom disertakan dalam pernyataan SPL, Realtime Compute for Apache Flink hanya menarik sebagian data yang diperoleh setelah penyaringan baris atau pemangkasan kolom untuk komputasi selanjutnya.

Persiapan

  • Simple Log Service telah diaktifkan. Sebuah Proyek dan sebuah Logstore telah dibuat. Untuk informasi lebih lanjut, lihat Aktivasi Simple Log Service dan Membuat Proyek dan Logstore.

  • Dalam topik ini, log akses Lapisan 7 Server Load Balancer (SLB) yang disimulasikan dikumpulkan ke Logstore dari Simple Log Service. Log-log tersebut berisi lebih dari 10 bidang. Log simulasi acak terus-menerus dihasilkan. Contoh log:

    {
      "__source__": "127.0.0.1",
      "__tag__:__receive_time__": "1706531737",
      "__time__": "1706531727",
      "__topic__": "slb_layer7",
      "body_bytes_sent": "3577",
      "client_ip": "114.137.XXX.XXX",
      "host": "www.pi.mock.com",
      "http_host": "www.cwj.mock.com",
      "http_user_agent": "Mozilla/5.0 (Windows NT 6.2; rv:22.0) Gecko/20130405 Firefox/23.0",
      "request_length": "1662",
      "request_method": "GET",
      "request_time": "31",
      "request_uri": "/request/path-0/file-3",
      "scheme": "https",
      "slbid": "slb-02",
      "status": "200",
      "upstream_addr": "42.63.XXX.XXX",
      "upstream_response_time": "32",
      "upstream_status": "200",
      "vip_addr": "223.18.XX.XXX"
    }
  • Bidang slbid di Logstore memiliki tiga jenis nilai. Pernyataan berikut digunakan untuk menanyakan jumlah tampilan halaman (PV) untuk nilai-nilai bidang slbid dalam log yang dihasilkan dalam 15 menit. Hasilnya menunjukkan bahwa PV untuk nilai slb-01 setara dengan PV untuk nilai slb-02.

    image

Prosedur

Penyaringan Baris: SPL memberikan konektor Simple Log Service kemampuan dorongan filter. Anda dapat menentukan pernyataan kueri untuk konektor Simple Log Service untuk mengaktifkan dorongan kondisi filter. Ini mencegah transmisi data penuh, serta penyaringan dan komputasi data penuh.

Pemangkasan Kolom: SPL memberikan konektor Simple Log Service kemampuan dorongan proyeksi. Anda dapat mengonfigurasi parameter kueri untuk konektor Simple Log Service untuk mengaktifkan dorongan bidang proyeksi. Ini mencegah transmisi data penuh, serta penyaringan dan komputasi data penuh.

Penyaringan Baris

Langkah 1: Membuat pekerjaan SQL

  1. Masuk ke Konsol Realtime Compute for Apache Flink. Temukan ruang kerja yang ingin Anda kelola dan klik Konsol di kolom Tindakan.

  2. Di panel navigasi di sebelah kiri, pilih Development > ETL.

  3. Klik New. Di kotak dialog New Draft, pilih SQL Scripts > Blank Stream Draft dan klik Next.

    image

  4. Salin pengaturan pekerjaan SQL berikut yang digunakan untuk membuat tabel sementara ke editor SQL:

    CREATE TEMPORARY TABLE sls_input(
      request_uri STRING,
      scheme STRING,
      slbid STRING,
      status STRING,
      `__topic__` STRING METADATA VIRTUAL,
      `__source__` STRING METADATA VIRTUAL,
      `__timestamp__` STRING METADATA VIRTUAL,
       __tag__ MAP<VARCHAR, VARCHAR> METADATA VIRTUAL,
      proctime as PROCTIME()
    ) WITH (
      'connector' = 'sls',
      'endpoint' ='cn-hangzhou-intranet.log.aliyuncs.com',
      'accessId' = 'yourAccessKeyID',
      'accessKey' = 'yourAccessKeySecret',
      'starttime' = '2025-02-19 00:00:00',
      'project' ='test-project',
      'logstore' ='clb-access-log',
      'query' = '* | where slbid = ''slb-01'''
    );

    Tabel berikut menjelaskan parameter dari pekerjaan SQL.

    Parameter

    Deskripsi

    Contoh

    connector

    Konektor Simple Log Service. Untuk informasi lebih lanjut, lihat Konektor yang didukung.

    sls

    endpoint

    Titik akhir internal Simple Log Service. Untuk informasi lebih lanjut, lihat Titik Akhir.

    cn-hangzhou-intranet.log.aliyuncs.com

    accessId

    ID AccessKey. Untuk informasi lebih lanjut, lihat Membuat pasangan AccessKey.

    LTAI****************

    accessKey

    Rahasia AccessKey. Untuk informasi lebih lanjut, lihat Membuat pasangan AccessKey.

    yourAccessKeySecret

    starttime

    Titik waktu saat kueri dimulai.

    2025-02-19 00:00:00

    project

    Nama proyek Simple Log Service.

    test-project

    logstore

    Nama Logstore Simple Log Service.

    clb-access-log

    query

    Pernyataan SPL. Perhatikan bahwa dalam pengembangan pekerjaan SQL untuk Realtime Compute for Apache Flink, string harus diloloskan dengan menggunakan tanda kutip tunggal ('').

    * | where slbid = ''slb-01''

  5. Pilih dan klik kanan pengaturan pekerjaan SQL. Di pop-up yang muncul, klik Run untuk terhubung ke Simple Log Service.

    image

Langkah 2: Kueri berturut-turut dan hasil

  1. Masukkan pernyataan analitik berikut dalam pekerjaan SQL dan lakukan kueri agregat berdasarkan slbid:

    SELECT slbid, count(1) as slb_cnt FROM sls_input GROUP BY slbid;
  2. Di sudut kanan atas halaman, klik ikon Debug. Di kotak dialog debug, pilih Create new session cluster dari daftar drop-down Session Cluster dan konfigurasikan parameter berdasarkan gambar berikut.

    image

  3. Dalam daftar drop-down debug, pilih kluster sesi yang telah dibuat dan klik OK.

    image

  4. Di bagian Hasil, nilai slb-01 selalu ditampilkan untuk bidang slbid. Hasilnya menunjukkan bahwa setelah Anda menentukan pernyataan SPL, sls_input hanya mencakup data yang cocok dengan slbid='slb-01'.

    image

Pemangkasan Kolom

Langkah 1: Membuat pekerjaan SQL

  1. Masuk ke Konsol Realtime Compute for Apache Flink. Temukan ruang kerja yang ingin Anda kelola dan klik Konsol di kolom Tindakan.

  2. Di panel navigasi di sebelah kiri, pilih Development > ETL.

  3. Klik New. Di kotak dialog New Draft, pilih SQL Scripts > Blank Stream Draft dan klik Next.

    image

  4. Salin pengaturan pekerjaan SQL berikut yang digunakan untuk membuat tabel sementara ke editor SQL: Berbeda dengan penyaringan baris, pernyataan proyeksi ditambahkan ke parameter kueri berdasarkan pengaturan penyaringan baris. Batang vertikal (|) digunakan untuk memisahkan instruksi. Output dari instruksi sebelumnya digunakan sebagai input untuk instruksi berikutnya. Output dari instruksi terakhir menunjukkan output dari seluruh pipeline. Dengan cara ini, hanya konten bidang tertentu yang ditarik dari server Simple Log Service Anda.

    CREATE TEMPORARY TABLE sls_input_project(
      request_uri STRING,
      scheme STRING,
      slbid STRING,
      status STRING,
      `__topic__` STRING METADATA VIRTUAL,
      `__source__` STRING METADATA VIRTUAL,
      `__timestamp__` STRING METADATA VIRTUAL,
       __tag__ MAP<VARCHAR, VARCHAR> METADATA VIRTUAL,
      proctime as PROCTIME()
    ) WITH (
      'connector' = 'sls',
      'endpoint' ='cn-hangzhou-intranet.log.aliyuncs.com',
      'accessId' = 'yourAccessKeyID',
      'accessKey' = 'yourAccessKeySecret',
      'starttime' = '2025-02-19 00:00:00',
      'project' ='test-project',
      'logstore' ='clb-access-log',
      'query' = '* | where slbid = ''slb-01'' | project request_uri, scheme, slbid, status, __topic__, __source__, "__tag__:__receive_time__"'
    );

    Tabel berikut menjelaskan parameter dari pekerjaan SQL.

    Parameter

    Deskripsi

    Contoh

    connector

    Konektor Simple Log Service. Untuk informasi lebih lanjut, lihat Konektor yang didukung.

    sls

    endpoint

    Titik akhir internal Simple Log Service. Untuk informasi lebih lanjut, lihat Titik Akhir.

    cn-hangzhou-intranet.log.aliyuncs.com

    accessId

    ID AccessKey. Untuk informasi lebih lanjut, lihat Membuat pasangan AccessKey.

    LTAI****************

    accessKey

    Rahasia AccessKey. Untuk informasi lebih lanjut, lihat Membuat pasangan AccessKey.

    yourAccessKeySecret

    starttime

    Titik waktu saat kueri dimulai.

    2025-02-19 00:00:00

    project

    Nama proyek Simple Log Service.

    test-project

    logstore

    Nama Logstore Simple Log Service.

    clb-access-log

    query

    Pernyataan SPL. Perhatikan bahwa dalam pengembangan pekerjaan SQL untuk Realtime Compute for Apache Flink, string harus diloloskan dengan menggunakan tanda kutip tunggal ('').

    * | where slbid = ''slb-01''

  5. Pilih dan klik kanan pengaturan pekerjaan SQL. Di pop-up yang muncul, klik Run untuk terhubung ke Simple Log Service.

    image

Langkah 2: Kueri berturut-turut dan hasil

  1. Masukkan pernyataan analitik berikut dalam pekerjaan SQL dan lakukan kueri agregat berdasarkan slbid:

    SELECT slbid, count(1) as slb_cnt FROM sls_input_project GROUP BY slbid;
  2. Di sudut kanan atas halaman, klik ikon Debug. Di kotak dialog debug, pilih Create new session cluster dari daftar drop-down Session Cluster dan konfigurasikan parameter berdasarkan gambar berikut.

    image

  3. Dalam daftar drop-down debug, pilih kluster sesi yang telah dibuat dan klik OK.

    image

  4. Bagian Hasil menampilkan hasil, mirip dengan hasil pekerjaan SQL di mana penyaringan baris dilakukan.

    Catatan

    Catatan: Pekerjaan di mana penyaringan baris dilakukan mengembalikan semua bidang. Namun, konektor Simple Log Service hanya mengembalikan bidang tertentu berdasarkan pernyataan SPL saat ini, lebih lanjut mengurangi transmisi jaringan data.

    image