Anda dapat menggunakan Spark SQL di kluster AnalyticDB for MySQL untuk membaca dari dan menulis ke tabel C-Store yang menggunakan engine XUANWU, baik dalam mode real-time maupun batch.
Prasyarat
Kluster AnalyticDB for MySQL Edisi Perusahaan, Edisi Dasar, atau Edisi Data Lakehouse telah dibuat.
CatatanKluster Edisi Data Lakehouse harus memiliki lebih dari 0 ACU sumber daya penyimpanan yang dipesan.
Kluster Edisi Perusahaan harus memiliki lebih dari 0 ACU sumber daya yang dipesan.
Kluster Edisi Dasar harus memiliki lebih dari 0 ACU sumber daya yang dipesan.
Kelompok sumber daya pekerjaan telah dibuat untuk kluster AnalyticDB for MySQL Edisi Perusahaan, Edisi Dasar, atau Edisi Data Lakehouse.
Akun database telah dibuat untuk kluster AnalyticDB for MySQL Edisi Perusahaan, Edisi Dasar, atau Edisi Data Lakehouse.
Langkah 1: Buka pengembangan data
Masuk ke Konsol AnalyticDB for MySQL. Di pojok kiri atas konsol, pilih wilayah. Di panel navigasi sebelah kiri, klik Clusters. Temukan kluster yang ingin Anda kelola, lalu klik ID kluster tersebut.
-
Di panel navigasi sebelah kiri, pilih .
Pada tab SQLConsole, pilih engine Spark dan kelompok sumber daya pekerjaan.
Langkah 2: Buat database dan tabel C-Store
Anda dapat menjalankan pernyataan SQL berikut dalam mode pemrosesan batch atau mode interaktif. Untuk informasi selengkapnya, lihat Mode eksekusi Spark SQL.
Jalankan pernyataan berikut untuk membuat database:
CREATE DATABASE spark_create_adb_db_test;Jalankan pernyataan berikut untuk membuat tabel C-Store. Untuk informasi selengkapnya mengenai sintaks pembuatan tabel, lihat Buat tabel internal menggunakan Spark SQL.
CREATE TABLE spark_create_adb_db_test.test_adb_tbl ( id int, name string COMMENT 'test_name', age int ) using adb TBLPROPERTIES('primaryKey'='id,age', 'distributeType'='HASH', 'distributeColumns'='id', 'partitionType'='value', 'partitionColumn'='age', 'partitionCount'='120', 'storagePolicy'='COLD' );
Langkah 3: Baca dan tulis tabel C-Store
-
Anda dapat menjalankan pernyataan SQL berikut dalam mode pemrosesan batch atau mode interaktif. Untuk informasi selengkapnya, lihat Mode eksekusi Spark SQL.
-
Saat Anda menjalankan pernyataan Spark SQL, sistem hanya mengembalikan pesan yang menunjukkan apakah eksekusi berhasil atau gagal. Tidak ada data yang dikembalikan. Lihat data tabel di Logs pada tab Application List di halaman Spark Jar Development. Untuk informasi selengkapnya, lihat Lihat informasi aplikasi Spark.
Untuk operasi dalam mode batch (INSERT OVERWRITE), Anda hanya perlu memilih engine Spark dan kelompok sumber daya pekerjaan. Untuk operasi dalam mode real-time (INSERT INTO), Anda harus menggunakan perintah SET untuk menentukan kelompok sumber daya interaktif guna menjalankan pernyataan SQL.
Mode batch (INSERT OVERWRITE)
Catatan penggunaan
Perhatikan poin-poin berikut saat membaca dan menulis data dalam mode batch:
Spark SQL mendukung pembacaan (SELECT) dari dan penulisan (INSERT) ke tabel partisi C-Store, tetapi tidak mendukung tabel non-partisi. Untuk informasi selengkapnya tentang cara membuat tabel partisi, lihat CREATE TABLE.
Anda tidak dapat menggunakan Spark SQL untuk memperbarui (UPDATE) atau menghapus (DELETE) data dari tabel C-Store, baik tabel tersebut dipartisi maupun tidak.
Saat melakukan kueri terhadap hot data, Anda harus terlebih dahulu mengubah item konfigurasi
ELASTIC_ENABLE_HOT_PARTITION_HAS_HDD_REPLICA, lalu secara manual memicu pekerjaan BUILD. Anda hanya dapat menjalankan pernyataan kueri SQL setelah pekerjaan BUILD selesai. Jika tidak, pernyataan SQL akan gagal.Gunakan engine XIHE untuk menjalankan pernyataan SQL berikut guna mengubah item konfigurasi:
SET adb_config ELASTIC_ENABLE_HOT_PARTITION_HAS_HDD_REPLICA=true;Picu secara manual pekerjaan BUILD.
Jalankan pekerjaan BUILD pada partisi tertentu:
PentingAnda hanya dapat menjalankan pekerjaan BUILD pada partisi tertentu untuk kluster versi V3.1.6.0 atau yang lebih baru.
Untuk melihat dan memperbarui versi minor, buka bagian Configuration Information pada halaman Cluster Information di Konsol AnalyticDB for MySQL.
BUILD TABLE <table_name> force partitions='partition1,partition2';Jalankan pekerjaan BUILD pada seluruh tabel:
PentingFitur ini dinonaktifkan secara default karena proses rebuild indeks untuk semua partisi memakan waktu lama. Kami menyarankan Anda menjalankan pekerjaan BUILD hanya pada partisi tertentu. Jika ingin mengaktifkan fitur ini, evaluasi risiko sistem secara hati-hati, lalu kirim tiket.
BUILD TABLE <table_name> force = true;
Setelah memicu pekerjaan BUILD, jalankan pernyataan berikut untuk memeriksa status pekerjaan tersebut:
SELECT table_name, schema_name, status FROM INFORMATION_SCHEMA.KEPLER_META_BUILD_TASK ORDER BY create_time DESC LIMIT 10;
Tulis data ke tabel C-Store.
AnalyticDB for MySQL mendukung penulisan data ke tabel C-Store secara offline menggunakan pernyataan
INSERT OVERWRITE. Anda dapat memilih salah satu metode berikut untuk menulis data ke tabel C-Store:Metode 1: Tulis ke partisi statis
INSERT OVERWRITE spark_create_adb_db_test.test_adb_tbl partition(age=10) VALUES (1, 'bom');Metode 2: Tulis ke partisi dinamis
INSERT OVERWRITE spark_create_adb_db_test.test_adb_tbl partition (age) VALUES (1, 'bom', 10);
Baca data dari tabel C-Store.
SELECT * FROM spark_create_adb_db_test.test_adb_tbl;
Mode real-time (INSERT INTO)
AnalyticDB for MySQL memungkinkan Anda menggunakan pernyataan INSERT INTO untuk menulis data ke tabel C-Store dalam mode real-time. Anda dapat membaca dari dan menulis ke tabel menggunakan metode JDBC, metode View, atau metode Catalog.
Metode Katalog
Parameter Spark
Saat menggunakan Spark SQL untuk membaca data dari atau menulis data ke tabel C-Store, Anda dapat mengonfigurasi parameter berikut:
Parameter | Deskripsi | Default |
spark.adb.write.batchSize | Jumlah catatan data yang ditulis dalam satu batch. Nilainya harus berupa bilangan bulat positif. Catatan Parameter ini hanya berlaku saat Anda menulis data dalam mode real-time. | 600 |
spark.adb.write.arrow.maxMemoryBufferSize | Ukuran buffer memori maksimum untuk operasi penulisan. Nilainya harus berupa bilangan bulat positif. Satuan: MB. Catatan Parameter ini hanya berlaku saat Anda menulis data dalam mode batch. | 1024 |
spark.adb.write.arrow.maxRecordSizePerBatch | Jumlah maksimum catatan yang ditulis dalam satu batch. Nilainya harus berupa bilangan bulat positif. Catatan Parameter ini hanya berlaku saat Anda menulis data dalam mode batch. | 500 |