StarRocks Connector, External Catalog mekanizmasını kullanarak MaxCompute veri kaynaklarına sorunsuz erişim sağlar. Verileri içe aktarmadan veya harici tablolar oluşturmadan karmaşık SQL sorguları çalıştırabilirsiniz. Bu yaklaşım, veri analitiği verimliliğini artırırken operasyonel ve bakım (O&M) karmaşıklığını ve maliyetini azaltır. Bu konuda, StarRocks Connector kullanılarak MaxCompute kaynağına nasıl erişileceği açıklanmaktadır.
Arka plan bilgileri
StarRocks; çevrimiçi analitik işleme (OLAP) tabanlı çok boyutlu analiz, özel rapor oluşturma, gerçek zamanlı veri analizi ve ad hoc sorgular gibi kurumsal düzeydeki birçok analitik iş yükünü destekleyen, yeni nesil yüksek hızlı Massively Parallel Processing (MPP) veritabanıdır. StarRocks hakkında ayrıntılı bilgi için bkz. StarRocks Introduction. StarRocks, Catalog (veri kataloğu) özelliğini destekler. Bu özellik, hem dahili hem de harici verileri tek bir sistem içinde yönetmenize ve çeşitli harici kaynaklarda depolanan verilere kolayca erişip sorgulamanıza olanak tanır. Daha fazla bilgi için bkz. Catalog Overview.
Önkoşullar
Sürümü 3.2.3 veya üzeri olan bir StarRocks kümesi dağıttınız ve kümenin MaxCompute hizmetine düzgün erişebildiğinden emin oldunuz. StarRocks kümesinin nasıl dağıtılacağı hakkında daha fazla bilgi için bkz. Deploy a StarRocks shared-nothing cluster using Docker Compose.
Adanmış bir Data Transmission Service kaynak grubu (abonelik) satın alın veya açık depolama (kullandıkça öde) kaynaklarını etkinleştirin.
Sınırlamalar
Standart tablolar, bölümlenmiş tablolar, kümelenmiş tablolar, Delta Tables ve materyalize edilmiş görünümlerin okunmasını destekler. Harici tabloların veya mantıksal görünümlerin okunmasını desteklemez.
JSON veri türlerinin okunmasını desteklemez.
Yalnızca Schema özelliği devre dışı bırakılmış MaxCompute projelerini destekler. Schema hakkında ayrıntılı bilgi için bkz. Schema operations.
MaxCompute Catalog oluşturma
StarRocks üzerinde oturum açın ve StarRocks içinde bir MaxCompute Catalog oluşturun. External Catalogs hakkında daha fazla bilgi için bkz. Create External Catalog.
Sözdizimi
CREATE EXTERNAL CATALOG <catalog_name>
[COMMENT <comment>]
PROPERTIES
(
"type" = "odps",
CatalogParams,
ScanParams,
CachingMetaParams
)
Parametre açıklamaları
-
Ortak parametreler
Parameter
Required
Description
catalog_name
Yes
MaxCompute Catalog adı. Aşağıdaki adlandırma kurallarına uyun:
-
Harflerden (a–z veya A–Z), rakamlardan (0–9) veya alt çizgilerden (_) oluşmalı ve bir harfle başlamalıdır.
-
Maksimum uzunluk 1023 karakterdir.
-
Catalog adları büyük/küçük harfe duyarlıdır.
type
Yes
Veri kaynağı türü. Bu parametreyi
odpsolarak ayarlayın.comment
No
MaxCompute Catalog açıklaması.
CatalogParams
Yes
StarRocks'un MaxCompute kaynağına erişmesi için kullanılan parametreler.
ScanParams
No
StarRocks'un MaxCompute dosya depolama alanına erişmesi için kullanılan parametreler.
CachingMetaParams
No
Meta veri önbelleğe alma ilkesini tanımlayan parametreler.
-
-
CatalogParams parametreleri
Parameter
Required
Description
odps.endpoint
Yes
MaxCompute hizmetinin bağlantı adresi. Uç noktayı, MaxCompute projesini oluştururken seçtiğiniz bölgeye ve ağ bağlantısı yöntemine göre yapılandırın. Bölgeye ve ağ türüne göre uç nokta değerleri için bkz. Endpoint.
ÖnemliŞu anda yalnızca Alibaba Cloud VPC ağları desteklenmektedir.
odps.project
Yes
MaxCompute proje adı. Proje adını almak için MaxCompute console üzerinde oturum açın ve sayfasına gidin.
NotStandart modda bir çalışma alanı oluşturduysanız bu parametreyi yapılandırırken üretim ortamı ile geliştirme ortamı (_dev) proje adlarını birbirinden ayırt edin.
odps.access.id
Yes
Alibaba Cloud hesabınızın veya Resource Access Management (RAM) kullanıcınızın AccessKey ID değeri. AccessKey ID değerini almak için AccessKey management page sayfasına gidin.
odps.access.key
Yes
AccessKey ID değerine karşılık gelen AccessKey secret değeri.
odps.tunnel.quota
Yes
-
ScanParams parametreleri
Parameter
Required
Description
odps.split.policy
No
Veri taraması sırasında kullanılan parçalama stratejisi. Geçerli değerler:
-
size (varsayılan): Veri boyutuna göre parçalama yapar. Varsayılan değer: 256 MB.
-
row_offset: Satır sayısına göre parçalama yapar.
NotParçalama stratejisi, hesaplama motorundaki veri tarama eşzamanlılığını önemli ölçüde etkiler. Varsayılan strateji ihtiyaçlarınızı karşılamıyorsa
row_offsetstratejisini seçin veodps.split.row.countparametresini kullanarak ayarlayın.odps.split.row.count
No
Parça başına maksimum satır sayısı. Varsayılan değer: 4194304. Değer aralığı: 0'dan büyük.
NotBu parametreyi yalnızca
odps.split.policydeğerirow_offsetolarak ayarlandığında yapılandırın. -
-
CachingMetaParams parametreleri
Parameter
Required
Description
odps.cache.table.enable
No
Tablo meta verilerinin önbelleğe alınıp alınmayacağı. Geçerli değerler:
-
true (varsayılan): Tablo meta verisi önbelleğe almayı etkinleştirir. Bu işlem, meta veri getirme ve güncelleme hızını artırır; sık DDL işlemleri içeren senaryolar, geniş çok kullanıcılı ortamlar veya karmaşık sorgu optimizasyonu durumları için uygundur.
-
false: Tablo meta verisi önbelleğe almayı devre dışı bırakır. Önbellek kaynakları sınırlı olduğundan ve önbelleğe aşırı bağımlılık fazla bellek tüketebileceğinden nadir sorgular veya meta verileri sık değişen tablolar için önbelleğe almayı devre dışı bırakın.
odps.cache.table.expire
No
Önbelleğe alınan tablo meta verilerinin otomatik olarak temizlenmeden önce geçerli olduğu süre aralığı (saniye cinsinden). Varsayılan değer: 86400 (24 saat). Değer aralığı: 0'a eşit veya 0'dan büyük.
odps.cache.table.size
No
Önbelleğe alınacak tablo meta verisi girdisi sayısı. Varsayılan değer: 1000.
odps.cache.partition.enable
No
Hedef tablo altındaki tüm bölümlerin meta verilerinin önbelleğe alınıp alınmayacağı. Geçerli değerler:
-
true (varsayılan): Hedef tablo altındaki tüm bölümlerin meta verilerinin önbelleğe alınmasını etkinleştirir.
-
false: Önbelleğe almayı devre dışı bırakır. Tüm bölümlerin meta verileri önbelleğe alınmaz.
NotTablo bölümlenmemişse
odps.cache.partition.enableparametresi herhangi bir etkiye sahip olmaz.odps.cache.partition.expire
No
Önbelleğe alınan bölüm meta verilerinin otomatik olarak temizlenmeden önce geçerli olduğu süre aralığı (saniye cinsinden). Varsayılan değer: 86400 (24 saat). Değer aralığı: 0'a eşit veya 0'dan büyük.
odps.cache.partition.size
No
Meta verileri önbelleğe alınabilen bölümlenmiş tablo sayısı. Varsayılan değer: 1000.
odps.cache.table-name.enable
No
MaxCompute projesindeki tüm tablo adlarının önbelleğe alınıp alınmayacağı. Geçerli değerler:
-
true: MaxCompute projesindeki tüm tablo adlarının önbelleğe alınmasını etkinleştirir.
-
false (varsayılan): MaxCompute projesindeki tüm tablo adlarının önbelleğe alınmasını devre dışı bırakır.
odps.cache.table-name.expire
No
MaxCompute projesindeki önbelleğe alınan tablo adı bilgilerinin otomatik olarak temizlenmeden önce geçerli olduğu süre aralığı (saniye cinsinden). Varsayılan değer: 86400 (24 saat). Değer aralığı: 0'a eşit veya 0'dan büyük.
-
Örnek
Aşağıdaki örnekte, MaxCompute projesi mf_mc_bj kullanılarak odps_catalog adlı bir MaxCompute Catalog oluşturulmaktadır.
-- Create 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"
);
MaxCompute kaynağına erişim
-
Hedef Catalog ve MaxCompute projesine geçiş yapın. Bu örnekte
odps_catalogvemf_mc_bjkullanılmaktadır.-
Sözdizimi
-
Yöntem 1
-- Specify Catalog SET CATALOG <catalog_name>; -- Specify MaxCompute project USE <project_name>; -
Yöntem 2
USE <catalog_name>.<project_name>;
-
-
Örnek
SET CATALOG odps_catalog; USE mf_mc_bj;
-
Verileri sorgulayın. Bu örnekte
srctablosu kullanılmaktadır.
SELECT * FROM src LIMIT 10;
Sonuç aşağıdaki gibidir.
+------+-------+
| key | value |
+------+-------+
| 1 | 1 |
| 3 | 3 |
| 2 | 2 |
| 4 | 100 |
| 5 | 200 |
| 6 | 300 |
| 3 | 400 |
+------+-------+
Diğer işlemler
MaxCompute Catalog görüntüleme
-
Geçerli StarRocks kümesindeki tüm Catalog listesini görüntüleyin.
SHOW CATALOGS;Sonuç aşağıdaki gibidir.
+-----------------+----------+------------------------------------------------------------------+ | Catalog | Type | Comment | +-----------------+----------+------------------------------------------------------------------+ | default_catalog | Internal | An internal catalog contains this cluster‘s self-managed tables. | | odps_catalog | Odps | NULL | +-----------------+----------+------------------------------------------------------------------+ -
Belirli bir Catalog için CREATE ifadesini görüntüleyin.
SHOW CREATE CATALOG odps_catalog;Sonuç aşağıdaki gibidir.
+--------------+--------------------------------------------------------------------------+ | 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" )| +-----------------------------------------------------------------------------------------+
MaxCompute tablo şemasını görüntüleme
-
Bir MaxCompute tablo şemasını tanımlayın.
-
Sözdizimi
DESC[RIBE] <catalog_name>.<database_name>.<table_name>; -
Parametre açıklamaları
catalog_name: zorunludur. Catalog adı.
database_name: zorunludur. Hedef Catalog altındaki MaxCompute proje adı.
table_name: zorunludur. Hedef MaxCompute projesi altındaki tablo adı.
-
Örnek
DESC odps_catalog.mf_mc_bj.src;Sonuç aşağıdaki gibidir.
+-------+------+------+-------+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+------+------+-------+---------+-------+ | id | INT | Yes | false | NULL | | | a | INT | Yes | false | NULL | | +-------+------+------+-------+---------+-------+
-
-
MaxCompute tablo şemasını ve CREATE TABLE ifadesini görüntüleyin.
-
Sözdizimi
SHOW CREATE TABLE <catalog_name>.<database_name>.<table_name>; -
Parametre açıklamaları
catalog_name: zorunludur. Catalog adı.
database_name: zorunludur. Hedef Catalog altındaki MaxCompute proje adı.
table_name: zorunludur. Hedef MaxCompute projesi altındaki tablo adı.
-
Örnek
SHOW CREATE TABLE odps_catalog.mf_mc_bj.src;Sonuç aşağıdaki gibidir.
+-------+--------------------------------------------------------------------------------+ | Table | Create Table | +-------+--------------------------------------------------------------------------------+ | src | CREATE TABLE `src` ( `id` int(11) DEFAULT NULL, `a` int(11) DEFAULT NULL ) | +-------+--------------------------------------------------------------------------------+
-
MaxCompute Catalog silme
Bir MaxCompute Catalog silmek için aşağıdaki komutu çalıştırın.
DROP CATALOG odps_catalog;
Maliyete Dayalı İyimserleştirici (CBO) istatistik toplama
StarRocks'un mevcut sürümü, MaxCompute tablo istatistiklerinin otomatik olarak toplanmasını desteklemez. İstatistik toplama görevini manuel olarak oluşturmak için aşağıdaki komutu çalıştırın.
-- Replace <table_name> with the MaxCompute table name
ANALYZE TABLE <table_name>;
StarRocks CBO, çeşitli istatistiklere dayalı olarak maliyet tahmini yapabilir ve on binlerce yürütme planı arasından en düşük maliyetli yürütme planını seçerek karmaşık sorguların verimliliğini ve performansını artırır. Daha fazla bilgi için bkz. Gather statistics for CBO.
Meta veri önbelleğini manuel olarak yenileme
StarRocks, sorgu performansını artırmak için varsayılan olarak MaxCompute meta verilerini önbelleğe alır. Bir tablo şemasını değiştirdikten veya tablo verilerini güncelledikten sonra StarRocks'un en son meta verileri hemen alabilmesini sağlamak için tablonun meta verilerini manuel olarak yenileyin.
-- Replace <table_name> with the MaxCompute table name
REFRESH EXTERNAL TABLE <table_name>;
SSS
Veri okuma sırasında hata: Your slot quota is exceeded.
-
Sorun Analizi
Bu hata, okunan veri hacmi Data Transmission Service kotasını aştığında ortaya çıkar. Okuma işlemi sırasında StarRocks tabloyu birden çok parçaya böler ve bunları BE düğümlerine dağıtır; BE düğümleri ise verileri eşzamanlı olarak okumak için iş parçacığı havuzlarını kullanır. Okuma sırasında kaplanan yuva sayısı genellikle şu şekildedir:
Max(number of shards, number of BEs × BE thread pool concurrency). -
Çözüm
Daha yüksek eşzamanlılık sağlayan adanmış bir Data Transmission Service kaynak grubu satın alın. Talimatlar için bkz. Purchase and use dedicated Data Transmission Service resource groups.
ScanParamsparametrelerini yapılandırarak parça sayısını ayarlayın.row_offsetparçalama stratejisini kullanıyorsanızodps.split.row.countparametresini de artırın.StarRocks BE iş parçacığı havuzu parametrelerini
scanner_thread_pool_queue_sizevescanner_thread_pool_thread_numdeğiştirin. Ayrıntılar için bkz. Introduction to StarRocks.
Ek: Tür eşlemesi
|
MaxCompute field type |
StarRocks field type |
|
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 Önemli
StarRocks'ta TIMESTAMP türü bulunmamaktadır. TIMESTAMP verileri okunurken DATETIME olarak işlenir; bu da hassasiyet kaybına neden olur. |
|
ARRAY |
ARRAY |
|
MAP |
MAP |
|
STRUCT |
STRUCT |