AnalyticDB for MySQL memungkinkan Anda menggunakan Spark SQL untuk membaca dan menulis data ke tabel C-Store (tabel yang menggunakan mesin tabel XUANWU) dalam mode real-time atau batch. Topik ini menjelaskan cara melakukan operasi tersebut.
Prasyarat
Kluster AnalyticDB for MySQL Edisi Perusahaan, Edisi Dasar, atau Edisi Data Lakehouse telah dibuat.
CatatanJumlah sumber daya penyimpanan yang dipesan untuk kluster Edisi Data Lakehouse harus lebih besar dari 0 ACU.
Jumlah sumber daya yang dipesan untuk kluster Edisi Perusahaan harus lebih besar dari 0 ACU.
Jumlah sumber daya yang dipesan untuk kluster Edisi Dasar harus lebih besar dari 0 ACU.
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 mesin Spark dan kelompok sumber daya pekerjaan.
Langkah 2: Buat database dan tabel C-Store
Anda dapat mengeksekusi pernyataan SQL berikut dalam mode batch atau interaktif. Untuk informasi selengkapnya, lihat Mode eksekusi Spark SQL.
Eksekusi pernyataan berikut untuk membuat database.
CREATE DATABASE spark_create_adb_db_test;Eksekusi pernyataan berikut untuk membuat tabel C-Store. Untuk informasi selengkapnya tentang sintaks Spark SQL untuk membuat tabel, lihat Gunakan Spark SQL untuk membuat tabel internal.
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: Membaca data dari dan menulis data ke tabel C-Store
Anda dapat mengeksekusi pernyataan SQL berikut dalam mode batch atau interaktif. Untuk informasi selengkapnya, lihat Mode eksekusi Spark SQL.
Saat mengeksekusi pernyataan Spark SQL, sistem akan mengembalikan pesan yang menunjukkan keberhasilan atau kegagalan eksekusi, tetapi tidak mengembalikan data. Untuk melihat data, buka halaman Spark JAR Development, lalu klik Logs di kolom Actions yang sesuai dengan aplikasi Anda pada tab Applications. Untuk informasi selengkapnya, lihat bagian "Lihat informasi tentang aplikasi Spark" dalam topik editor Spark.
Saat membaca dan menulis data ke tabel dalam mode batch (INSERT OVERWRITE), Anda hanya perlu memilih mesin Spark dan kelompok sumber daya pekerjaan—tidak diperlukan parameter tambahan. Namun, saat menggunakan mode real-time (INSERT INTO), Anda harus menggunakan perintah SET untuk menentukan kelompok sumber daya interaktif guna mengeksekusi pernyataan SQL.
Membaca dan menulis data dalam mode batch (INSERT OVERWRITE)
Catatan penggunaan
Perhatikan hal-hal berikut saat membaca dan menulis data ke tabel dalam mode batch:
Anda hanya dapat menggunakan Spark SQL untuk membaca dan menulis data ke tabel C-Store partisi melalui pernyataan SELECT dan INSERT. Tabel non-partisi tidak didukung. Untuk informasi tentang cara membuat tabel partisi, lihat CREATE TABLE.
Anda tidak dapat menggunakan Spark SQL untuk memperbarui (UPDATE) atau menghapus (DELETE) data di tabel C-Store, baik partisi maupun non-partisi.
Saat mengkueri data panas, Anda harus terlebih dahulu memodifikasi item konfigurasi
ELASTIC_ENABLE_HOT_PARTITION_HAS_HDD_REPLICA, lalu memicu tugas BUILD secara manual. Pernyataan kueri SQL hanya dapat dieksekusi setelah tugas BUILD selesai; jika tidak, pernyataan tersebut akan gagal.Gunakan mesin XIHE untuk mengeksekusi pernyataan SQL berikut guna memodifikasi item konfigurasi.
SET adb_config ELASTIC_ENABLE_HOT_PARTITION_HAS_HDD_REPLICA=true;Picu tugas BUILD secara manual.
Eksekusi pernyataan BUILD pada partisi tertentu:
PentingAnda hanya dapat mengeksekusi pernyataan BUILD pada partisi tertentu untuk kluster versi V3.1.6.0 atau yang lebih baru.
Untuk melihat dan memperbarui versi minor kluster AnalyticDB for MySQL, masuk ke Konsol AnalyticDB for MySQL, lalu buka bagian Configuration Information pada halaman Cluster Information.
BUILD TABLE <table_name> force partitions='partition1,partition2';Jalankan pernyataan BUILD pada semua tabel:
PentingFitur ini dinonaktifkan secara default. Jika Anda memaksa mengeksekusi pernyataan BUILD pada seluruh tabel, sistem akan membuat ulang indeks untuk semua data di semua partisi tabel tersebut—proses ini memakan waktu lama. Kami menyarankan agar Anda hanya mengeksekusi pernyataan BUILD pada partisi tertentu. Jika tetap ingin menggunakan fitur ini, evaluasi risiko sistem terlebih dahulu, lalu ajukan tiket untuk mengaktifkannya.
BUILD TABLE <table_name> force = true;
Setelah tugas BUILD dipicu, eksekusi pernyataan berikut untuk melihat status tugas BUILD:
SELECT table_name, schema_name, status FROM INFORMATION_SCHEMA.KEPLER_META_BUILD_TASK ORDER BY create_time DESC LIMIT 10;
Menulis data ke tabel C-Store.
AnalyticDB for MySQL memungkinkan Anda menggunakan pernyataan INSERT OVERWRITE untuk menulis data ke tabel C-Store dalam mode batch. Anda dapat menggunakan salah satu metode berikut:
Metode 1: Eksekusi pernyataan INSERT OVERWRITE untuk menulis data ke partisi statis
INSERT OVERWRITE spark_create_adb_db_test.test_adb_tbl partition(age=10) VALUES (1, 'bom');Metode 2: Eksekusi pernyataan INSERT OVERWRITE untuk menulis data ke partisi dinamis
INSERT OVERWRITE spark_create_adb_db_test.test_adb_tbl partition (age) VALUES (1, 'bom', 10);
Membaca data dari tabel C-Store.
SELECT * FROM spark_create_adb_db_test.test_adb_tbl;
Membaca dan menulis data dalam 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 dan menulis data ke tabel menggunakan metode JDBC atau metode View.
Item konfigurasi Spark
Saat menggunakan Spark SQL untuk membaca atau menulis data ke tabel C-Store, Anda dapat mengonfigurasi item konfigurasi berikut:
Item konfigurasi | Deskripsi | Nilai default |
spark.adb.write.batchSize | Jumlah catatan data yang dapat ditulis per batch. Nilainya harus bilangan bulat positif. Catatan Parameter ini hanya didukung saat Anda menulis data dalam mode real-time. | 600 |
spark.adb.write.arrow.maxMemoryBufferSize | Ukuran maksimum buffer memori tulis. Nilainya harus bilangan bulat positif. Satuan: MB. Catatan Parameter ini hanya didukung saat Anda menulis data dalam mode batch. | 1024 |
spark.adb.write.arrow.maxRecordSizePerBatch | Jumlah maksimum catatan data yang dapat ditulis per batch. Nilainya harus bilangan bulat positif. Catatan Parameter ini hanya didukung saat Anda menulis data dalam mode batch. | 500 |