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:
Konektor Simple Log Service menarik terlalu banyak baris atau kolom data yang tidak diperlukan, menyebabkan overhead jaringan.
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-01setara dengan PV untuk nilaislb-02.
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
Masuk ke Konsol Realtime Compute for Apache Flink. Temukan ruang kerja yang ingin Anda kelola dan klik Konsol di kolom Tindakan.
Di panel navigasi di sebelah kiri, pilih .
Klik New. Di kotak dialog New Draft, pilih dan klik Next.

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''
Pilih dan klik kanan pengaturan pekerjaan SQL. Di pop-up yang muncul, klik Run untuk terhubung ke Simple Log Service.

Langkah 2: Kueri berturut-turut dan hasil
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;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.

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

Di bagian Hasil, nilai
slb-01selalu ditampilkan untuk bidang slbid. Hasilnya menunjukkan bahwa setelah Anda menentukan pernyataan SPL, sls_input hanya mencakup data yang cocok dengan slbid='slb-01'.
Pemangkasan Kolom
Langkah 1: Membuat pekerjaan SQL
Masuk ke Konsol Realtime Compute for Apache Flink. Temukan ruang kerja yang ingin Anda kelola dan klik Konsol di kolom Tindakan.
Di panel navigasi di sebelah kiri, pilih .
Klik New. Di kotak dialog New Draft, pilih dan klik Next.

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''
Pilih dan klik kanan pengaturan pekerjaan SQL. Di pop-up yang muncul, klik Run untuk terhubung ke Simple Log Service.

Langkah 2: Kueri berturut-turut dan hasil
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;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.

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

Bagian Hasil menampilkan hasil, mirip dengan hasil pekerjaan SQL di mana penyaringan baris dilakukan.
CatatanCatatan: 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.
