Konektor StarRocks memungkinkan akses mulus ke sumber data MaxCompute dan menjalankan kueri SQL kompleks melalui katalog eksternal tanpa perlu mengimpor data atau membuat tabel eksternal. Pendekatan ini meningkatkan efisiensi analitik data sekaligus mengurangi kompleksitas dan biaya operasional. Topik ini menjelaskan cara menggunakan konektor StarRocks untuk mengakses MaxCompute.
Informasi latar belakang
StarRocks adalah database Pemrosesan Paralel Masif (MPP) generasi berikutnya yang berkecepatan tinggi, mampu memenuhi berbagai kebutuhan analisis tingkat perusahaan seperti analisis multidimensi, pembuatan laporan kustom, analitik data real-time, dan analitik data ad hoc. Untuk informasi selengkapnya tentang StarRocks, lihat Apa itu StarRocks?. StarRocks mendukung fitur katalog data yang memungkinkan pengelolaan data internal dan eksternal dalam satu sistem terpadu, sehingga mempermudah akses dan kueri terhadap berbagai sumber data eksternal. Untuk informasi selengkapnya, lihat Ikhtisar katalog.
Prasyarat
Kluster StarRocks (V3.2.3 atau lebih baru) telah diterapkan, dan kluster tersebut dapat mengakses MaxCompute. Untuk informasi tentang cara menerapkan kluster StarRocks, lihat Terapkan kluster StarRocks shared-nothing menggunakan Docker Compose.
Anda telah membeli kelompok sumber daya eksklusif untuk Layanan Transmisi Data (langganan) .
Batasan
Anda dapat membaca data dari tabel standar, tabel partisi, tabel terkluster, tabel Delta, dan Tampilan yang di-materialisasi. Anda tidak dapat membaca data dari tabel eksternal atau tampilan logis.
Anda tidak dapat membaca data JSON.
Hanya proyek MaxCompute yang tidak mengaktifkan fitur skema yang didukung. Untuk informasi selengkapnya tentang fitur skema, lihat Operasi terkait skema.
Buat katalog MaxCompute
Masuk ke kluster StarRocks dan buat katalog MaxCompute. Untuk informasi lebih lanjut mengenai katalog eksternal, lihat CREATE EXTERNAL CATALOG.
Sintaks
CREATE EXTERNAL CATALOG <catalog_name>
[COMMENT <comment>]
PROPERTIES
(
"type" = "odps",
CatalogParams,
ScanParams,
CachingMetaParams
)Parameter
Parameter umum
Parameter
Wajib
Deskripsi
catalog_name
Ya
Nama katalog MaxCompute. Nama harus memenuhi persyaratan berikut:
Nama hanya boleh berisi huruf (a hingga z atau A hingga Z), angka (0 hingga 9), atau garis bawah (_) dan harus dimulai dengan huruf.
Panjang nama tidak boleh melebihi 1.023 karakter.
Nama katalog bersifat case-sensitive.
type
Ya
Jenis sumber data. Tetapkan parameter ini ke
odps.comment
Tidak
Deskripsi katalog MaxCompute.
CatalogParams
Ya
Parameter yang digunakan oleh StarRocks untuk terhubung ke MaxCompute.
ScanParams
Tidak
Parameter yang digunakan oleh StarRocks untuk terhubung ke penyimpanan file MaxCompute.
CachingMetaParams
Tidak
Parameter yang menentukan kebijakan cache metadata.
Parameter yang dapat dikonfigurasi dalam CatalogParams
Parameter
Wajib
Deskripsi
odps.endpoint
Ya
Titik akhir layanan MaxCompute. Anda harus mengonfigurasi parameter ini berdasarkan wilayah dan mode konektivitas jaringan yang Anda pilih saat membuat proyek MaxCompute. Untuk informasi tentang titik akhir yang sesuai dengan berbagai wilayah dan mode konektivitas jaringan, lihat Titik akhir.
PentingHanya jaringan VPC Alibaba Cloud yang didukung.
odps.project
Ya
Nama proyek MaxCompute. Anda dapat masuk ke Konsol MaxCompute dan memilih di panel navigasi sebelah kiri untuk mendapatkan nama proyek MaxCompute.
CatatanJika workspace Anda berada dalam mode standar, Anda harus membedakan nama proyek di lingkungan pengembangan (_dev) dari nama proyek di lingkungan produksi saat mengonfigurasi parameter ini.
odps.access.id
Ya
ID AccessKey Akun Alibaba Cloud atau Pengguna RAM Anda. Anda dapat membuka halaman Manajemen AccessKey untuk mendapatkan ID AccessKey.
odps.access.key
Ya
Rahasia AccessKey yang sesuai dengan ID AccessKey tersebut.
odps.tunnel.quota
Ya
Nama kuota yang digunakan untuk mengakses MaxCompute. Dua jenis sumber daya didukung untuk mengakses MaxCompute: kelompok sumber daya eksklusif untuk Layanan Transmisi Data (langganan) dan penyimpanan terbuka (bayar sesuai penggunaan). Anda hanya dapat menentukan satu nama kuota.
Langganan: Masuk ke Konsol MaxCompute, ganti wilayah di pojok kiri atas, lalu pilih Workspace > Quota Management di panel navigasi sebelah kiri untuk melihat daftar kuota yang tersedia. Untuk informasi selengkapnya, lihat Sumber daya komputasi - Manajemen kuota.
Bayar sesuai penggunaan: Masuk ke Konsol MaxCompute, ganti wilayah di pojok kiri atas, lalu pilih Tenant Management > Tenant Properties di panel navigasi sebelah kiri. Aktifkan sakelar Open Storage (Storage API) untuk memberikan izin yang diperlukan.
Parameter yang dapat dikonfigurasi dalam ScanParams
Parameter
Wajib
Deskripsi
odps.split.policy
Tidak
Kebijakan sharding data yang digunakan selama pemindaian data. Nilai yang valid:
size: Data di-shard berdasarkan ukuran data. Ini adalah nilai default. Ukuran default untuk sharding adalah 256 MB.
row_offset: Data di-shard berdasarkan jumlah baris.
CatatanKebijakan sharding sangat memengaruhi konkurensi pemindaian data pada mesin komputasi. Jika kebijakan default tidak memenuhi kebutuhan bisnis Anda, Anda dapat menggunakan kebijakan
row_offsetbersama dengan parameterodps.split.row.countuntuk melakukan penyesuaian sesuai kebutuhan.odps.split.row.count
Tidak
Jumlah maksimum baris data yang terdapat dalam setiap shard. Nilai default: 4194304. Rentang nilai: nilai lebih besar dari 0.
CatatanParameter ini hanya diperlukan ketika Anda menetapkan parameter
odps.split.policykerow_offset.Parameter yang dapat dikonfigurasi dalam CachingMetaParams
Parameter
Wajib
Deskripsi
odps.cache.table.enable
Tidak
Menentukan apakah metadata tabel akan di-cache. Nilai yang valid:
true: menyimpan cache metadata tabel. Ini adalah nilai default. Penyimpanan cache metadata tabel membantu meningkatkan kecepatan pengambilan dan pembaruan metadata. Penyimpanan cache metadata tabel cocok untuk skenario di mana Anda perlu sering melakukan operasi DDL, lingkungan besar yang melibatkan banyak pengguna digunakan, atau Anda ingin mengoptimalkan kueri kompleks.
false: tidak menyimpan cache metadata tabel. Sumber daya caching terbatas, dan ketergantungan berlebihan pada caching dapat menghabiskan sumber daya memori. Anda dapat menonaktifkan penyimpanan cache metadata tabel dalam skenario di mana Anda tidak perlu sering melakukan kueri data atau metadata tabel sering berubah.
odps.cache.table.expire
Tidak
Durasi setelah metadata tabel yang di-cache dihapus secara otomatis. Satuan: detik (s). Nilai default: 86400, yang setara dengan 24 jam. Rentang nilai: nilai lebih besar dari atau sama dengan 0.
odps.cache.table.size
Tidak
Jumlah tabel yang metadatanya perlu di-cache. Nilai default: 1000.
odps.cache.partition.enable
Tidak
Menentukan apakah metadata semua partisi dalam tabel yang diinginkan akan di-cache. Nilai yang valid:
true: menyimpan cache metadata semua partisi dalam tabel yang diinginkan. Ini adalah nilai default.
false: tidak menyimpan cache metadata partisi apa pun dalam tabel yang diinginkan.
CatatanParameter
odps.cache.partition.enabletidak berlaku untuk tabel non-partisi.odps.cache.partition.expire
Tidak
Durasi setelah metadata semua partisi yang di-cache dihapus secara otomatis. Satuan: detik (s). Nilai default: 86400, yang setara dengan 24 jam. Rentang nilai: nilai lebih besar dari atau sama dengan 0.
odps.cache.partition.size
Tidak
Jumlah tabel partisi yang dapat di-cache. Nilai default: 1000.
odps.cache.table-name.enable
Tidak
Menentukan apakah nama semua tabel dalam proyek MaxCompute akan di-cache. Nilai yang valid:
true: menyimpan cache nama semua tabel dalam proyek MaxCompute.
false: tidak menyimpan cache nama semua tabel dalam proyek MaxCompute. Ini adalah nilai default.
odps.cache.table-name.expire
Tidak
Durasi setelah nama tabel dalam proyek MaxCompute yang di-cache dihapus secara otomatis. Satuan: detik (s). Nilai default: 86400, yang setara dengan 24 jam. Rentang nilai: nilai lebih besar dari atau sama dengan 0.
Contoh
Bagian ini memberikan contoh cara membuat katalog MaxCompute bernama odps_catalog, menggunakan proyek MaxCompute mf_mc_bj.
-- Buat katalog.
CREATE EXTERNAL CATALOG odps_catalog PROPERTIES(
"type"="odps",
"odps.access.id"="<yourAccessKeyId>",
"odps.access.key"="<yourAccessKeySecret>",
"odps.endpoint"="http://service.cn-beijing.maxcompute.aliyun.com/api",
"odps.tunnel.quota"="pay-as-you-go",
"odps.project"="mf_mc_bj"
);Akses MaxCompute
Beralih ke katalog dan proyek MaxCompute yang telah Anda buat. Contoh ini menggunakan katalog MaxCompute
odps_catalogdan proyek MaxComputemf_mc_bj.Sintaks
Metode 1
-- Tentukan katalog. SET CATALOG <catalog_name>; -- Tentukan proyek MaxCompute. USE <project_name>;Metode 2
USE <catalog_name>.<project_name>;
Contoh
SET CATALOG odps_catalog; USE mf_mc_bj;
Lakukan kueri data. Contoh ini menggunakan tabel
src.
SELECT * FROM src LIMIT 10;Hasil berikut dikembalikan.
+------+-------+
| key | value |
+------+-------+
| 1 | 1 |
| 3 | 3 |
| 2 | 2 |
| 4 | 100 |
| 5 | 200 |
| 6 | 300 |
| 3 | 400 |
+------+-------+Operasi lainnya
Lihat katalog MaxCompute
Kueri semua katalog dalam kluster StarRocks saat ini.
SHOW CATALOGS;Hasil berikut dikembalikan.
+-----------------+----------+------------------------------------------------------------------+ | Catalog | Type | Comment | +-----------------+----------+------------------------------------------------------------------+ | default_catalog | Internal | An internal catalog contains this cluster‘s self-managed tables. | | odps_catalog | Odps | NULL | +-----------------+----------+------------------------------------------------------------------+Kueri pernyataan pembuatan untuk katalog tertentu.
SHOW CREATE CATALOG odps_catalog;Hasil berikut dikembalikan.
+--------------+--------------------------------------------------------------------------+ | Catalog | Create Catalog | +--------------+--------------------------------------------------------------------------+ | odps_catalog | CREATE EXTERNAL CATALOG `odps_catalog` PROPERTIES ("odps.endpoint" = "http://service.cn-beijing.maxcompute.aliyun.com/api", "odps.access.id" = "<yourAccessKeyId>", "odps.access.key" = "<yourAccessKeySecret>", "odps.project" = "odps_project", "type" = "odps" )| +-----------------------------------------------------------------------------------------+
Lihat skema tabel dari tabel MaxCompute
Kueri skema tabel MaxCompute.
Sintaks
DESC[RIBE] <catalog_name>.<database_name>.<table_name>;Parameter
catalog_name: Wajib. Nama katalog.
database_name: Wajib. Nama proyek MaxCompute dalam katalog.
table_name: Wajib. Nama tabel dalam proyek MaxCompute.
Contoh
DESC odps_catalog.mf_mc_bj.src;Hasil berikut dikembalikan.
+-------+------+------+-------+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+------+------+-------+---------+-------+ | id | INT | Yes | false | NULL | | | a | INT | Yes | false | NULL | | +-------+------+------+-------+---------+-------+
Kueri skema tabel MaxCompute beserta pernyataan pembuatannya.
Sintaks
SHOW CREATE TABLE <catalog_name>.<database_name>.<table_name>;Parameter
catalog_name: Wajib. Nama katalog.
database_name: Wajib. Nama proyek MaxCompute dalam katalog.
table_name: Wajib. Nama tabel dalam proyek MaxCompute.
Contoh
SHOW CREATE TABLE odps_catalog.mf_mc_bj.src;Hasil berikut dikembalikan.
+-------+--------------------------------------------------------------------------------+ | Table | Create Table | +-------+--------------------------------------------------------------------------------+ | src | CREATE TABLE `src` ( `id` int(11) DEFAULT NULL, `a` int(11) DEFAULT NULL ) | +-------+--------------------------------------------------------------------------------+
Hapus katalog MaxCompute
Anda dapat menjalankan perintah berikut untuk menghapus katalog MaxCompute.
DROP CATALOG odps_catalog;Kumpulkan informasi statistik untuk Cost-Based Optimizer (CBO)
StarRocks tidak mendukung pengumpulan otomatis informasi statistik untuk tabel MaxCompute. Anda dapat menjalankan perintah berikut untuk membuat tugas secara manual guna mengumpulkan informasi statistik tersebut.
-- Ganti <table_name> dengan nama tabel MaxCompute.
ANALYZE TABLE <table_name>;Cost-Based Optimizer (CBO) StarRocks memperkirakan biaya eksekusi kueri SQL berdasarkan berbagai jenis informasi statistik dan memilih rencana eksekusi dengan biaya terendah dari puluhan ribu rencana eksekusi potensial. Hal ini meningkatkan efisiensi dan kinerja kueri kompleks. Untuk informasi selengkapnya, lihat Kumpulkan statistik untuk CBO.
Perbarui metadata yang di-cache secara manual
Secara default, StarRocks menyimpan cache metadata MaxCompute untuk meningkatkan kinerja kueri. Jika Anda mengubah skema tabel atau memperbarui data dalam tabel, Anda dapat memperbarui metadata tabel tersebut secara manual agar StarRocks segera menggunakan cache metadata terbaru.
-- Ganti <table_name> dengan nama tabel MaxCompute.
REFRESH EXTERNAL TABLE <table_name>;Pertanyaan Umum
Pesan kesalahan "Your slot quota is exceeded" dilaporkan selama pembacaan data.
Analisis masalah
Kesalahan ini terjadi ketika operasi pembacaan data melebihi kuota Layanan Transmisi Data. Saat StarRocks membaca data, tabel dibagi menjadi beberapa shard dan didistribusikan ke node backend (BE). Node BE kemudian membaca data secara konkuren menggunakan kolam thread. Oleh karena itu, jumlah slot yang digunakan selama operasi baca biasanya dihitung sebagai berikut:
Max(Jumlah shard, Jumlah BE × Konkurensi kolam thread BE).Solusi
Beli kelompok sumber daya eksklusif untuk Layanan Transmisi Data yang mendukung konkurensi tinggi. Untuk informasi selengkapnya, lihat Beli dan gunakan kelompok sumber daya eksklusif untuk Layanan Transmisi Data.
Konfigurasikan parameter
ScanParamsuntuk menyesuaikan jumlah shard. Jika Anda menggunakan kebijakan shardingrow_offset, Anda juga harus menambah nilai parameterodps.split.row.count.Ubah jumlah thread dalam kolam thread BE StarRocks dengan mengubah parameter
scanner_thread_pool_queue_sizedanscanner_thread_pool_thread_num. Untuk informasi selengkapnya tentang cara mengubah parameter ini, lihat Apa itu StarRocks?.
Lampiran: Pemetaan tipe data
Tipe data bidang di MaxCompute | Tipe data bidang di StarRocks |
BOOLEAN | BOOLEAN |
TINYINT | TINYINT |
SMALLINT | SMALLINT |
INT | INT |
BIGINT | BIGINT |
FLOAT | FLOAT |
DOUBLE | DOUBLE |
DECIMAL(p, s) | DECIMAL(p, s) |
STRING | VARCHAR(1073741824) |
VARCHAR(n) | VARCHAR(n) |
CHAR(n) | CHAR(n) |
JSON | VARCHAR(1073741824) |
BINARY | VARBINARY |
DATE | DATE |
DATETIME | DATETIME |
TIMESTAMP | DATETIME Penting StarRocks tidak mendukung tipe data TIMESTAMP. Saat StarRocks membaca data bertipe TIMESTAMP, StarRocks mengonversi tipe data tersebut menjadi DATETIME, yang menyebabkan hilangnya presisi data. |
ARRAY | ARRAY |
MAP | MAP |
STRUCT | STRUCT |