Le connecteur StarRocks utilise le mécanisme External Catalog pour accéder de manière transparente aux sources de données MaxCompute, sans importer les données ni créer de tables externes, et exécuter des requêtes SQL complexes. Cette approche améliore l'efficacité de l'analyse des données tout en réduisant la complexité et les coûts opérationnels et de maintenance (O&M). Cette rubrique explique comment accéder à MaxCompute à l'aide du connecteur StarRocks.
Informations générales
StarRocks est une base de données MPP (Massively Parallel Processing) nouvelle génération à haute vitesse qui prend en charge plusieurs charges de travail analytiques de niveau entreprise, telles que l'analyse multidimensionnelle basée sur OLAP (Online Analytical Processing), la création de rapports personnalisés, l'analyse de données en temps réel et les requêtes ad hoc. Pour plus d'informations sur StarRocks, consultez Présentation de StarRocks. StarRocks prend en charge la fonctionnalité Catalog (catalogue de données), qui vous permet de gérer les données internes et externes au sein d'un même système et d'accéder facilement aux données stockées dans diverses sources externes. Pour plus d'informations, consultez Présentation du catalogue.
Prérequis
Déployez un cluster StarRocks version 3.2.3 ou ultérieure et assurez-vous que le cluster peut accéder correctement au service MaxCompute. Pour plus d'informations sur le déploiement d'un cluster StarRocks, consultez Déployer un cluster StarRocks shared-nothing à l'aide de Docker Compose.
Achetez un groupe de ressources Data Transmission Service dédié (abonnement) ou activez des ressources de stockage ouvert (paiement à l'utilisation).
Limites
La lecture des tables standard, des tables partitionnées, des tables clusterisées, des Delta Tables et des vues matérialisées est prise en charge. La lecture des tables externes ou des vues logiques n'est pas prise en charge.
La lecture des types de données JSON n'est pas prise en charge.
Seuls les projets MaxCompute avec Schema désactivé sont pris en charge. Pour plus de détails sur Schema, consultez Opérations Schema.
Créer un catalogue MaxCompute
Connectez-vous à StarRocks et créez un catalogue MaxCompute. Pour plus d'informations sur les External Catalogs, consultez Créer un catalogue externe.
Syntaxe
CREATE EXTERNAL CATALOG <catalog_name>
[COMMENT <comment>]
PROPERTIES
(
"type" = "odps",
CatalogParams,
ScanParams,
CachingMetaParams
)
Descriptions des paramètres
-
Paramètres courants
Paramètre
Obligatoire
Description
catalog_name
Oui
Nom du catalogue MaxCompute. Respectez les règles de nommage suivantes :
-
Doit être composé de lettres (a–z ou A–Z), de chiffres (0–9) ou de traits de soulignement (_), et doit commencer par une lettre.
-
La longueur maximale est de 1 023 caractères.
-
Les noms de catalogue sont sensibles à la casse.
type
Oui
Type de la source de données. Définissez ce paramètre sur
odps.comment
Non
Description du catalogue MaxCompute.
CatalogParams
Oui
Paramètres permettant à StarRocks d'accéder à MaxCompute.
ScanParams
Non
Paramètres permettant à StarRocks d'accéder au stockage de fichiers MaxCompute.
CachingMetaParams
Non
Paramètres définissant la politique de mise en cache des métadonnées.
-
-
Paramètres CatalogParams
Paramètre
Obligatoire
Description
odps.endpoint
Oui
Adresse de connexion du service MaxCompute. Configurez l'endpoint en fonction de la région et de la méthode de connectivité réseau sélectionnées lors de la création du projet MaxCompute. Pour connaître les valeurs d'endpoint par région et type de réseau, consultez Endpoint.
ImportantActuellement, seuls les réseaux VPC Alibaba Cloud sont pris en charge.
odps.project
Oui
Nom du projet MaxCompute. Connectez-vous à la console MaxCompute et accédez à la page pour obtenir le nom du projet.
RemarqueSi vous avez créé un espace de travail en mode standard, faites la distinction entre les noms de projet de l'environnement de production et de l'environnement de développement (_dev) lors de la configuration de ce paramètre.
odps.access.id
Oui
ID AccessKey de votre compte Alibaba Cloud ou utilisateur Resource Access Management (RAM). Accédez à la page de gestion des AccessKey pour obtenir l'ID AccessKey.
odps.access.key
Oui
Secret AccessKey correspondant à l'ID AccessKey.
odps.tunnel.quota
Oui
-
Paramètres ScanParams
Paramètre
Obligatoire
Description
odps.split.policy
Non
Stratégie de fragmentation utilisée lors de l'analyse des données. Valeurs valides :
-
size (par défaut) : fragmentation par taille de données. Valeur par défaut : 256 Mo.
-
row_offset : fragmentation par nombre de lignes.
RemarqueLa stratégie de fragmentation affecte considérablement la concurrence d'analyse des données dans le moteur de calcul. Si la stratégie par défaut ne répond pas à vos besoins, choisissez la stratégie
row_offsetet ajustez-la à l'aide du paramètreodps.split.row.count.odps.split.row.count
Non
Nombre maximal de lignes par fragment. Valeur par défaut : 4 194 304. Plage de valeurs : supérieure à 0.
RemarqueConfigurez ce paramètre uniquement lorsque
odps.split.policyest défini surrow_offset. -
-
Paramètres CachingMetaParams
Paramètre
Obligatoire
Description
odps.cache.table.enable
Non
Indique s'il faut mettre en cache les métadonnées de table. Valeurs valides :
-
true (par défaut) : active la mise en cache des métadonnées de table. Cela améliore la vitesse de récupération et de mise à jour des métadonnées et convient aux scénarios impliquant des opérations DDL fréquentes, des environnements multi-utilisateurs de grande ampleur ou une optimisation complexe des requêtes.
-
false : désactive la mise en cache des métadonnées de table. Étant donné que les ressources de cache sont limitées et qu'une dépendance excessive au cache peut consommer trop de mémoire, désactivez la mise en cache pour les requêtes peu fréquentes ou les tables dont les métadonnées changent fréquemment.
odps.cache.table.expire
Non
Intervalle de temps, en secondes (s), après lequel les métadonnées de table mises en cache sont automatiquement supprimées. Valeur par défaut : 86 400 (24 heures). Plage de valeurs : supérieure ou égale à 0.
odps.cache.table.size
Non
Nombre d'entrées de métadonnées de table à mettre en cache. Valeur par défaut : 1 000.
odps.cache.partition.enable
Non
Indique s'il faut mettre en cache les métadonnées de toutes les partitions sous la table cible. Valeurs valides :
-
true (par défaut) : active la mise en cache des métadonnées de toutes les partitions sous la table cible.
-
false : désactive la mise en cache. Les métadonnées de toutes les partitions ne sont pas mises en cache.
RemarqueSi la table n'est pas partitionnée, le paramètre
odps.cache.partition.enablen'a aucun effet.odps.cache.partition.expire
Non
Intervalle de temps, en secondes (s), après lequel les métadonnées de partition mises en cache sont automatiquement supprimées. Valeur par défaut : 86 400 (24 heures). Plage de valeurs : supérieure ou égale à 0.
odps.cache.partition.size
Non
Nombre de tables partitionnées dont les métadonnées peuvent être mises en cache. Valeur par défaut : 1 000.
odps.cache.table-name.enable
Non
Indique s'il faut mettre en cache tous les noms de table dans le projet MaxCompute. Valeurs valides :
-
true : active la mise en cache de tous les noms de table dans le projet MaxCompute.
-
false (par défaut) : désactive la mise en cache de tous les noms de table dans le projet MaxCompute.
odps.cache.table-name.expire
Non
Intervalle de temps, en secondes (s), après lequel les informations de nom de table mises en cache dans le projet MaxCompute sont automatiquement supprimées. Valeur par défaut : 86 400 (24 heures). Plage de valeurs : supérieure ou égale à 0.
-
Exemple
L'exemple suivant crée un catalogue MaxCompute nommé odps_catalog, en utilisant le projet MaxCompute mf_mc_bj comme exemple.
-- 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"
);
Accéder à MaxCompute
-
Basculez vers le catalogue et le projet MaxCompute cibles. Cet exemple utilise
odps_catalogetmf_mc_bj.-
Syntaxe
-
Méthode 1
-- Specify Catalog SET CATALOG <catalog_name>; -- Specify MaxCompute project USE <project_name>; -
Méthode 2
USE <catalog_name>.<project_name>;
-
-
Exemple
SET CATALOG odps_catalog; USE mf_mc_bj;
-
Interrogez les données. Cet exemple utilise la table
src.
SELECT * FROM src LIMIT 10;
Le résultat est le suivant.
+------+-------+
| key | value |
+------+-------+
| 1 | 1 |
| 3 | 3 |
| 2 | 2 |
| 4 | 100 |
| 5 | 200 |
| 6 | 300 |
| 3 | 400 |
+------+-------+
Autres opérations
Afficher le catalogue MaxCompute
-
Listez tous les catalogues dans le cluster StarRocks actuel.
SHOW CATALOGS;Le résultat est le suivant.
+-----------------+----------+------------------------------------------------------------------+ | Catalog | Type | Comment | +-----------------+----------+------------------------------------------------------------------+ | default_catalog | Internal | An internal catalog contains this cluster‘s self-managed tables. | | odps_catalog | Odps | NULL | +-----------------+----------+------------------------------------------------------------------+ -
Affichez l'instruction CREATE pour un catalogue spécifique.
SHOW CREATE CATALOG odps_catalog;Le résultat est le suivant.
+--------------+--------------------------------------------------------------------------+ | 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" )| +-----------------------------------------------------------------------------------------+
Afficher le schéma de table MaxCompute
-
Décrivez le schéma d'une table MaxCompute.
-
Syntaxe
DESC[RIBE] <catalog_name>.<database_name>.<table_name>; -
Descriptions des paramètres
catalog_name : obligatoire. Nom du catalogue.
database_name : obligatoire. Nom du projet MaxCompute sous le catalogue cible.
table_name : obligatoire. Nom de la table sous le projet MaxCompute cible.
-
Exemple
DESC odps_catalog.mf_mc_bj.src;Le résultat est le suivant.
+-------+------+------+-------+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+------+------+-------+---------+-------+ | id | INT | Yes | false | NULL | | | a | INT | Yes | false | NULL | | +-------+------+------+-------+---------+-------+
-
-
Affichez le schéma de la table MaxCompute et son instruction CREATE TABLE.
-
Syntaxe
SHOW CREATE TABLE <catalog_name>.<database_name>.<table_name>; -
Descriptions des paramètres
catalog_name : obligatoire. Nom du catalogue.
database_name : obligatoire. Nom du projet MaxCompute sous le catalogue cible.
table_name : obligatoire. Nom de la table sous le projet MaxCompute cible.
-
Exemple
SHOW CREATE TABLE odps_catalog.mf_mc_bj.src;Le résultat est le suivant.
+-------+--------------------------------------------------------------------------------+ | Table | Create Table | +-------+--------------------------------------------------------------------------------+ | src | CREATE TABLE `src` ( `id` int(11) DEFAULT NULL, `a` int(11) DEFAULT NULL ) | +-------+--------------------------------------------------------------------------------+
-
Supprimer un catalogue MaxCompute
Exécutez la commande suivante pour supprimer un catalogue MaxCompute.
DROP CATALOG odps_catalog;
Collecte de statistiques pour l'optimiseur basé sur les coûts (CBO)
La version actuelle de StarRocks ne prend pas en charge la collecte automatique des statistiques de table MaxCompute. Exécutez la commande suivante pour créer manuellement une tâche de collecte de statistiques.
-- Replace <table_name> with the MaxCompute table name
ANALYZE TABLE <table_name>;
Le CBO de StarRocks peut effectuer une estimation des coûts basée sur diverses statistiques et sélectionner le plan d'exécution au coût le plus faible parmi des dizaines de milliers de plans d'exécution, améliorant ainsi l'efficacité et les performances des requêtes complexes. Pour plus d'informations, consultez Collecter des statistiques pour CBO.
Actualiser manuellement le cache de métadonnées
Par défaut, StarRocks met en cache les métadonnées MaxCompute pour améliorer les performances des requêtes. Après avoir modifié le schéma d'une table ou mis à jour les données de la table, actualisez manuellement les métadonnées de la table pour garantir que StarRocks récupère immédiatement les dernières métadonnées.
-- Replace <table_name> with the MaxCompute table name
REFRESH EXTERNAL TABLE <table_name>;
FAQ
Erreur lors de la lecture des données : Your slot quota is exceeded.
-
Analyse du problème
Cette erreur se produit lorsque le volume de données lu dépasse le quota Data Transmission Service. Lors des lectures, StarRocks divise la table en plusieurs fragments et les distribue aux nœuds BE, qui utilisent des pools de threads pour lire les données simultanément. Le nombre de slots occupés pendant la lecture est généralement :
Max(nombre de fragments, nombre de BE × concurrence du pool de threads BE). -
Solution
Achetez un groupe de ressources Data Transmission Service dédié avec une concurrence plus élevée. Pour obtenir des instructions, consultez Acheter et utiliser des groupes de ressources Data Transmission Service dédiés.
Ajustez le nombre de fragments en configurant les paramètres
ScanParams. Si vous utilisez la stratégie de fragmentationrow_offset, augmentez également le paramètreodps.split.row.count.Modifiez les paramètres du pool de threads BE de StarRocks
scanner_thread_pool_queue_sizeetscanner_thread_pool_thread_num. Pour plus de détails, consultez Présentation de StarRocks.
Annexe : Mappage des types
|
Type de champ MaxCompute |
Type de champ 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 Important
StarRocks ne dispose pas de type TIMESTAMP. Lors de la lecture des données TIMESTAMP, elles sont traitées comme DATETIME, ce qui entraîne une perte de précision. |
|
ARRAY |
ARRAY |
|
MAP |
MAP |
|
STRUCT |
STRUCT |