Spark membantu Anda melakukan komputasi kompleks dan analisis efisien pada data Tablestore menggunakan E-MapReduce (EMR) SQL atau DataFrame.
Fitur
Selain fitur dasar, konektor Tablestore Spark menyediakan fitur inti berikut untuk komputasi batch:
Pemilihan indeks: Pemilihan indeks yang tepat menentukan efisiensi kueri data. Anda dapat memilih indeks yang paling sesuai dengan kondisi filter untuk meningkatkan efisiensi kueri. Tablestore memungkinkan Anda memilih antara indeks sekunder global dan indeks pencarian.
Pemangkasan partisi: Fitur ini memungkinkan Anda memfilter split yang tidak diperlukan terlebih dahulu dengan menggunakan konfigurasi granular berdasarkan kondisi filter, yang mengurangi jumlah data yang dikirim dari server.
Pushdown kolom Proyeksi dan Filter: Fitur ini memungkinkan Anda mendorong kondisi kolom Proyeksi dan Filter ke server, yang mengurangi jumlah data yang dikirim dari setiap partisi.
Penyesuaian dinamis ukuran setiap split: Fitur ini memungkinkan Anda menyesuaikan ukuran setiap split dan jumlah split. Setiap split diikat ke partisi dari Resilient Distributed Dataset (RDD), yang mempercepat eksekusi tugas Spark.
CatatanAnda dapat memanggil operasi ComputeSplitsBySize untuk mendapatkan split. Operasi ini membagi semua data dalam tabel menjadi split berdasarkan ukuran yang ditentukan dan mengembalikan titik-titik split di antara split tersebut serta informasi mesin tempat split tersebut didistribusikan. Operasi ini digunakan untuk menjalankan rencana seperti rencana konkurensi pada mesin komputasi.
Komputasi aliran menggunakan change data capture (CDC) untuk menyelesaikan konsumsi aliran dan komputasi dalam mode mikro-batch Spark berdasarkan Tunnel Service. Sementara itu, semantik at-least-once disediakan. Dalam komputasi aliran, satu split diikat ke satu partisi RDD. Partisi tabel dapat diskalakan untuk mengimplementasikan skalabilitas linear dari throughput data.
Gunakan EMR SQL atau DataFrame
Anda dapat menggunakan salah satu metode berikut untuk mengakses Tablestore dengan Spark: EMR SQL atau DataFrame.
Gunakan EMR SQL
Metode ini menggunakan pernyataan SQL standar untuk mengakses dan melakukan operasi pada data bisnis. Anda dapat menggunakannya untuk mengimplementasikan migrasi tanpa batas dari logika bisnis yang ada.
Gunakan DataFrame
Metode ini memerlukan pengetahuan pemrograman. Namun, Anda dapat menggabungkannya dengan fitur lainnya untuk mengeksekusi logika bisnis yang kompleks, cocok untuk skenario yang fleksibel dan kompleks.
Metode akses data
Tablestore menyediakan metode berikut untuk komputasi batch Spark dalam mengakses data: Kueri berbasis KV dari tabel atau indeks pencarian global dan kueri berbasis indeks pencarian. Selain kemampuan kueri dan analisis yang luas, Tablestore memungkinkan Anda membaca dan menulis sejumlah besar data.
Perbedaan antara kedua metode akses data:
Kueri berbasis KV mencapai efisiensi tinggi ketika bidang yang ditentukan untuk penyaringan adalah kolom kunci utama. Namun, metode ini tidak cocok jika bidang yang ditentukan untuk penyaringan adalah kolom non-kunci utama karena nilai-nilai bidang ini sering berubah. Selain itu, kueri berbasis KV tidak mendukung kueri geo.
Kueri berbasis indeks pencarian berlaku untuk skenario akses data berikut.
CatatanBerdasarkan indeks terbalik dan penyimpanan berorientasi kolom, indeks pencarian menyediakan fitur kueri dan analisis seperti pencarian teks lengkap, kueri fuzzy, kueri geo, dan agregasi yang mirip dengan Elasticsearch.
Beberapa skenario analisis data real-time dengan persyaratan tinggi pada latensi.
Banyak bidang yang ditentukan untuk penyaringan adalah kolom non-kunci utama. Bidang-bidang ini tidak dapat dimuat oleh kunci utama dari indeks sekunder global atau tabel.
Efisiensi penyaringan tinggi ketika bidang digunakan untuk penyaringan. Sebuah bidang dapat digunakan untuk menyaring sebagian besar data.
Sebagai contoh, dalam
select * from table where col = 1000;, col menunjukkan kolom non-kunci utama. Kondisi col = 1000 dapat digunakan untuk menyaring sebagian besar data.Kondisi kueri berisi bidang untuk kueri geo.
Bagian berikut menggunakan gambar dan pernyataan SQL select * from table where col1 like 'A%' or col2 = 'a'; untuk menjelaskan cara menggunakan dua jenis kueri tersebut.
Ketika Anda menggunakan indeks pencarian untuk mengakses data, Anda dapat memperoleh baris data (pk1 = 1) yang berisi kolom col1 dengan nilai 'A%' dari indeks pencarian. Anda juga dapat memperoleh dua baris data (pk1 = 1 dan pk1 = 2) yang berisi kolom col2 dengan nilai 'a' dari indeks pencarian. Kemudian, kedua hasil tersebut digabungkan menggunakan union untuk mendapatkan data yang memenuhi kondisi (
pk1 = 1,col1 = 'Alibaba Cloud',col2 = 'a').Ketika Anda menggunakan kueri berbasis KV, data diquery dari tabel Tablestore. Tabel hanya dapat diquery menggunakan kolom kunci utama. Jika bidang yang ditentukan dalam pernyataan SQL bukan kolom kunci utama tabel, seluruh tabel harus dipindai.
col1 bukan kolom kunci utama tabel. Oleh karena itu, Tablestore memindai seluruh tabel untuk mencari baris data yang berisi kolom col2 dengan nilai 'A%'. col2 juga bukan kolom kunci utama tabel. Oleh karena itu, Tablestore memindai seluruh tabel lagi untuk mencari dua baris data yang berisi kolom col2 dengan nilai 'a'. Kemudian, kedua hasil tersebut digabungkan menggunakan union.
Anda juga dapat membuat tabel indeks di mana kolom kunci utamanya adalah col1 dan col2. Namun, metode ini mengurangi fleksibilitas.