StarRocks Connector memanfaatkan mekanisme External Catalog untuk mengakses sumber data MaxCompute secara mulus—tanpa perlu mengimpor data atau membuat tabel eksternal—dan menjalankan kueri SQL kompleks. Pendekatan ini meningkatkan efisiensi analitik data serta mengurangi kompleksitas dan biaya operasional serta maintenance (O&M). Topik ini menjelaskan cara mengakses MaxCompute menggunakan StarRocks Connector.
Informasi latar belakang
StarRocks adalah database Massively Parallel Processing (MPP) generasi berikutnya yang berkecepatan tinggi dan mendukung berbagai beban kerja analitik tingkat enterprise, seperti analisis multidimensi berbasis online analytical processing (OLAP), pembuatan laporan kustom, analisis data real-time, dan kueri ad hoc. Untuk detail tentang StarRocks, lihat Pengenalan StarRocks. StarRocks mendukung fitur Catalog (data catalog), yang memungkinkan Anda mengelola data internal dan eksternal dalam satu sistem serta dengan mudah mengakses dan melakukan kueri terhadap data yang disimpan di berbagai sumber eksternal. Untuk informasi lebih lanjut, lihat Ikhtisar Catalog.
Prasyarat
-
Anda telah men-deploy kluster StarRocks versi 3.2.3 atau yang lebih baru dan memastikan bahwa kluster tersebut dapat mengakses layanan MaxCompute dengan baik. Untuk informasi lebih lanjut tentang cara men-deploy kluster StarRocks, lihat Deploy kluster StarRocks shared-nothing menggunakan Docker Compose.
- Beli kelompok sumber daya Data Transmission Service khusus (subscription) atau aktifkan sumber daya penyimpanan terbuka (pay-as-you-go).
Batasan
-
Mendukung pembacaan tabel standar, tabel partisi, tabel terkluster, Delta Tables, dan tampilan yang di-materialisasi. Tidak mendukung pembacaan tabel eksternal atau tampilan logis.
-
Tidak mendukung pembacaan tipe data JSON.
-
Hanya mendukung proyek MaxCompute dengan Schema dinonaktifkan. Untuk detail tentang Schema, lihat Operasi Schema.
Buat MaxCompute Catalog
Login ke StarRocks dan buat MaxCompute Catalog di StarRocks. Untuk informasi lebih lanjut tentang External Catalog, lihat Buat External Catalog.
Sintaksis
CREATE EXTERNAL CATALOG <catalog_name>
[COMMENT <comment>]
PROPERTIES
(
"type" = "odps",
CatalogParams,
ScanParams,
CachingMetaParams
)
Deskripsi parameter
-
Parameter umum
Parameter
Wajib
Deskripsi
catalog_name
Ya
Nama MaxCompute Catalog. Ikuti aturan penamaan berikut:
-
Harus terdiri dari huruf (a–z atau A–Z), angka (0–9), atau garis bawah (_), dan harus dimulai dengan huruf.
-
Panjang maksimum 1023 karakter.
-
Nama Catalog bersifat case-sensitive.
type
Ya
Jenis sumber data. Atur parameter ini ke
odps.comment
Tidak
Deskripsi MaxCompute Catalog.
CatalogParams
Ya
Parameter agar StarRocks dapat mengakses MaxCompute.
ScanParams
Tidak
Parameter agar StarRocks dapat mengakses penyimpanan file MaxCompute.
CachingMetaParams
Tidak
Parameter yang menentukan kebijakan caching metadata.
-
-
Parameter CatalogParams
Parameter
Wajib
Deskripsi
odps.endpoint
Ya
Alamat koneksi layanan MaxCompute. Konfigurasikan endpoint berdasarkan wilayah dan metode konektivitas jaringan yang dipilih saat Anda membuat proyek MaxCompute. Untuk nilai endpoint berdasarkan wilayah dan jenis jaringan, lihat Endpoint.
PentingSaat ini, hanya jaringan VPC Alibaba Cloud yang didukung.
odps.project
Ya
Nama proyek MaxCompute. Login ke Konsol MaxCompute dan buka halaman untuk mendapatkan nama proyek.
CatatanJika Anda membuat workspace dalam mode standar, bedakan antara nama proyek lingkungan produksi dan lingkungan pengembangan (_dev) saat mengonfigurasi parameter ini.
odps.access.id
Ya
ID AccessKey Akun Alibaba Cloud atau Pengguna Resource Access Management (RAM) Anda. Buka halaman manajemen AccessKey untuk mendapatkan ID AccessKey.
odps.access.key
Ya
Rahasia AccessKey yang sesuai dengan ID AccessKey tersebut.
odps.tunnel.quota
Ya
-
Parameter ScanParams
Parameter
Wajib
Deskripsi
odps.split.policy
Tidak
Strategi sharding yang digunakan saat memindai data. Nilai yang valid:
-
size (default): shard berdasarkan ukuran data. Nilai default: 256 MB.
-
row_offset: shard berdasarkan jumlah baris.
CatatanStrategi sharding sangat memengaruhi konkurensi pemindaian data di mesin komputasi. Jika strategi default tidak memenuhi kebutuhan Anda, pilih strategi
row_offsetdan sesuaikan menggunakan parameterodps.split.row.count.odps.split.row.count
Tidak
Jumlah maksimum baris per shard. Nilai default: 4194304. Rentang nilai: lebih besar dari 0.
CatatanKonfigurasikan parameter ini hanya ketika
odps.split.policydiatur kerow_offset. -
-
Parameter CachingMetaParams
Parameter
Wajib
Deskripsi
odps.cache.table.enable
Tidak
Apakah akan menyimpan cache metadata tabel. Nilai yang valid:
-
true (default): mengaktifkan caching metadata tabel. Ini meningkatkan kecepatan pengambilan dan pembaruan metadata, cocok untuk skenario yang melibatkan operasi DDL sering, lingkungan multi-pengguna besar, atau optimasi kueri kompleks.
-
false: menonaktifkan caching metadata tabel. Karena sumber daya cache terbatas dan ketergantungan berlebihan pada caching dapat menghabiskan terlalu banyak memori, nonaktifkan caching untuk kueri yang jarang dilakukan atau tabel yang metadata-nya sering berubah.
odps.cache.table.expire
Tidak
Interval waktu, dalam detik (s), setelah itu metadata tabel yang di-cache secara otomatis dihapus. Nilai default: 86400 (24 jam). Rentang nilai: lebih besar dari atau sama dengan 0.
odps.cache.table.size
Tidak
Jumlah entri metadata tabel yang di-cache. Nilai default: 1000.
odps.cache.partition.enable
Tidak
Apakah akan menyimpan cache metadata untuk semua partisi di bawah tabel target. Nilai yang valid:
-
true (default): mengaktifkan caching metadata untuk semua partisi di bawah tabel target.
-
false: menonaktifkan caching. Metadata untuk semua partisi tidak di-cache.
CatatanJika tabel tidak dipartisi, parameter
odps.cache.partition.enabletidak berpengaruh.odps.cache.partition.expire
Tidak
Interval waktu, dalam detik (s), setelah itu metadata partisi yang di-cache secara otomatis dihapus. Nilai default: 86400 (24 jam). Rentang nilai: lebih besar dari atau sama dengan 0.
odps.cache.partition.size
Tidak
Jumlah tabel partisi yang metadata-nya dapat di-cache. Nilai default: 1000.
odps.cache.table-name.enable
Tidak
Apakah akan menyimpan cache semua nama tabel dalam proyek MaxCompute. Nilai yang valid:
-
true: mengaktifkan caching semua nama tabel dalam proyek MaxCompute.
-
false (default): menonaktifkan caching semua nama tabel dalam proyek MaxCompute.
odps.cache.table-name.expire
Tidak
Interval waktu, dalam detik (s), setelah itu informasi nama tabel yang di-cache dalam proyek MaxCompute secara otomatis dihapus. Nilai default: 86400 (24 jam). Rentang nilai: lebih besar dari atau sama dengan 0.
-
Contoh
Contoh berikut membuat MaxCompute Catalog bernama odps_catalog, menggunakan proyek MaxCompute mf_mc_bj sebagai contoh.
-- Buat catalog
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 Catalog dan proyek MaxCompute target. Contoh ini menggunakan
odps_catalogdanmf_mc_bj.-
Sintaksis
-
Metode 1
-- Tentukan Catalog 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;
Hasilnya sebagai berikut.
+------+-------+
| key | value |
+------+-------+
| 1 | 1 |
| 3 | 3 |
| 2 | 2 |
| 4 | 100 |
| 5 | 200 |
| 6 | 300 |
| 3 | 400 |
+------+-------+
Operasi lainnya
Lihat MaxCompute Catalog
-
Daftar semua Catalog di kluster StarRocks saat ini.
SHOW CATALOGS;Hasilnya sebagai berikut.
+-----------------+----------+------------------------------------------------------------------+ | Catalog | Type | Comment | +-----------------+----------+------------------------------------------------------------------+ | default_catalog | Internal | An internal catalog contains this cluster‘s self-managed tables. | | odps_catalog | Odps | NULL | +-----------------+----------+------------------------------------------------------------------+ -
Tampilkan pernyataan CREATE untuk Catalog tertentu.
SHOW CREATE CATALOG odps_catalog;Hasilnya sebagai berikut.
+--------------+--------------------------------------------------------------------------+ | 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 MaxCompute
-
Jelaskan skema tabel MaxCompute.
-
Sintaksis
DESC[RIBE] <catalog_name>.<database_name>.<table_name>; -
Deskripsi parameter
-
catalog_name: wajib. Nama Catalog.
-
database_name: wajib. Nama proyek MaxCompute di bawah Catalog target.
-
table_name: wajib. Nama tabel di bawah proyek MaxCompute target.
-
-
Contoh
DESC odps_catalog.mf_mc_bj.src;Hasilnya sebagai berikut.
+-------+------+------+-------+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+------+------+-------+---------+-------+ | id | INT | Yes | false | NULL | | | a | INT | Yes | false | NULL | | +-------+------+------+-------+---------+-------+
-
-
Tampilkan skema tabel MaxCompute beserta pernyataan CREATE TABLE-nya.
-
Sintaksis
SHOW CREATE TABLE <catalog_name>.<database_name>.<table_name>; -
Deskripsi parameter
-
catalog_name: wajib. Nama Catalog.
-
database_name: wajib. Nama proyek MaxCompute di bawah Catalog target.
-
table_name: wajib. Nama tabel di bawah proyek MaxCompute target.
-
-
Contoh
SHOW CREATE TABLE odps_catalog.mf_mc_bj.src;Hasilnya sebagai berikut.
+-------+--------------------------------------------------------------------------------+ | Table | Create Table | +-------+--------------------------------------------------------------------------------+ | src | CREATE TABLE `src` ( `id` int(11) DEFAULT NULL, `a` int(11) DEFAULT NULL ) | +-------+--------------------------------------------------------------------------------+
-
Hapus MaxCompute Catalog
Jalankan perintah berikut untuk menghapus MaxCompute Catalog.
DROP CATALOG odps_catalog;
Pengumpulan statistik Cost-Based Optimizer (CBO)
Versi StarRocks saat ini tidak mendukung pengumpulan statistik tabel MaxCompute secara otomatis. Jalankan perintah berikut untuk membuat tugas pengumpulan statistik secara manual.
-- Ganti <table_name> dengan nama tabel MaxCompute
ANALYZE TABLE <table_name>;
CBO StarRocks dapat melakukan estimasi biaya berdasarkan berbagai statistik dan memilih rencana eksekusi dengan biaya terendah dari puluhan ribu rencana eksekusi, sehingga meningkatkan efisiensi dan performa kueri kompleks. Untuk informasi lebih lanjut, lihat Kumpulkan statistik untuk CBO.
Segarkan ulang cache metadata secara manual
Secara default, StarRocks menyimpan cache metadata MaxCompute untuk meningkatkan performa kueri. Setelah mengubah skema tabel atau memperbarui data tabel, segarkan ulang metadata tabel secara manual agar StarRocks segera mengambil metadata terbaru.
-- Ganti <table_name> dengan nama tabel MaxCompute
REFRESH EXTERNAL TABLE <table_name>;
FAQ
Error saat membaca data: Kuota slot Anda telah melebihi batas.
-
Analisis Masalah
Error ini terjadi ketika volume data yang dibaca melebihi kuota Data Transmission Service. Saat membaca, StarRocks membagi tabel menjadi beberapa shard dan mendistribusikannya ke node BE, yang menggunakan kolam thread untuk membaca data secara konkuren. Jumlah slot yang digunakan selama pembacaan biasanya:
Max(jumlah shard, jumlah BE × konkurensi kolam thread BE). -
Solusi
-
Beli kelompok sumber daya Data Transmission Service khusus dengan konkurensi lebih tinggi. Untuk petunjuknya, lihat Beli dan gunakan kelompok sumber daya Data Transmission Service khusus.
-
Atur jumlah shard dengan mengonfigurasi parameter
ScanParams. Jika Anda menggunakan strategi shardingrow_offset, tingkatkan juga parameterodps.split.row.count. -
Ubah parameter kolam thread BE StarRocks
scanner_thread_pool_queue_sizedanscanner_thread_pool_thread_num. Untuk detailnya, lihat Pengenalan StarRocks.
-
Lampiran: Pemetaan tipe
|
Tipe bidang MaxCompute |
Tipe bidang 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 memiliki tipe TIMESTAMP. Saat membaca data TIMESTAMP, data tersebut diperlakukan sebagai DATETIME, sehingga terjadi kehilangan presisi. |
|
ARRAY |
ARRAY |
|
MAP |
MAP |
|
STRUCT |
STRUCT |