MaxCompute introduit la fonctionnalité de table d'objets, qui permet au moteur de calcul de l'entrepôt de données d'accéder aux données non structurées et à leurs métadonnées stockées dans un data lake. Cette rubrique décrit la syntaxe des commandes et fournit des exemples d'utilisation des tables d'objets.
Contexte
Dans de nombreux flux de travail d'intelligence artificielle, les développeurs d'entrepôts de données, familiers avec les données et la logique métier, doivent prétraiter ou traiter des données non structurées pour les grands modèles. Ces tâches tirent parti de la puissance de calcul à grande échelle et à faible coût des plateformes de big data. Les processus et leurs résultats interagissent avec les données de l'entrepôt de données ou du data lake.
Le traitement des données non structurées via SQL présente les défis suivants :
Les moteurs SQL de big data ne connaissent pas la taille des objets lors de la lecture des fichiers depuis le stockage d'objets. Il est donc difficile d'optimiser le plan d'exécution, de contrôler la concurrence ou de lancer automatiquement un nombre approprié de tâches concurrentes. De plus, sans une poussée de prédicat efficace, la puissance de calcul ne peut pas être pleinement exploitée, en particulier en cas de déséquilibre des données.
La lecture des métadonnées depuis le stockage d'objets entraîne une latence élevée, car chaque requête nécessite un appel distant au service de stockage.
Les listes de fichiers du stockage d'objets ne peuvent être récupérées que de manière sérielle dans une fonction de table définie par l'utilisateur (UDTF) mono-processus, ce qui dégrade les performances de lecture des données.
Vous devez implémenter la logique d'autorisation et de connectivité réseau au sein d'une fonction définie par l'utilisateur (UDF) pour vous connecter aux services de stockage.
Les UDF ont des capacités limitées pour le traitement des données non structurées. Les entrepôts de données traditionnels ne disposent pas de fonctionnalités permettant de télécharger des images personnalisées de manière flexible et sécurisée, et n'offrent pas d'environnement d'exécution sécurisé pour les UDF. Par ailleurs, les appels distants nécessitent une intégration complexe de la concurrence avec les services de calcul distribués.
Fonctionnalités
La fonctionnalité de table d'objets offre les capacités suivantes :
Elle fournit un accès tabulaire aux métadonnées des fichiers Object Storage Service.
Elle met en cache les métadonnées versionnées des fichiers OSS dans une table de métadonnées, que le moteur SQL utilise pour les optimisations de requêtes, telles que le filtrage des données et la poussée de prédicat.
Elle propose des fonctions document intégrées pour lire le contenu des fichiers de données non structurées de diverses manières.
Elle permet au moteur SQL MaxCompute de créer des partitions concurrentes à partir des métadonnées de la table d'objets, libérant ainsi le potentiel du calcul distribué à grande échelle pour une lecture et un traitement des données plus efficaces.
Elle vous permet de télécharger des images personnalisées pour créer des UDF destinées au traitement des données non structurées.
Elle prend en charge le traitement des données non structurées pour générer des résultats structurés et les écrire dans des tables internes ou externes de l'entrepôt de données. Les versions futures prendront également en charge la génération de résultats non structurés et leur réécriture dans Object Storage Service via les tables d'objets.
Elle prend en charge le moteur Maxframe issu de l'écosystème Python.
Limites
Vous devez activer la fonctionnalité schema pour votre projet MaxCompute. Pour plus d'informations, consultez Activer la fonctionnalité schema.
MaxCompute doit prendre en charge le Type System 2.0.
Les tables d'objets ne prennent pas actuellement en charge les partitions.
Facturation
Le stockage des métadonnées dans la table d'objets est facturé. Pour plus d'informations, consultez Tarification du stockage. Bien que MaxCompute ne facture pas le stockage des fichiers OSS réels, les frais standard de stockage et d'accès aux données d'OSS s'appliquent. Pour plus d'informations, consultez Tarification du stockage OSS.
Pour les tâches d'extraction et d'actualisation des métadonnées OSS, la valeur
inputsizede chaque fichier analysé est basée sur la taille de ses métadonnées, et non sur sa taille réelle. Par conséquent, le coût total de la tâche d'actualisation dépend du nombre de fichiers, et non de leur taille réelle. Pour plus d'informations, consultez Facturation SQL pour les tables externes.-
Des frais de calcul s'appliquent lorsque vous utilisez une table d'objets pour analyser et extraire des données non structurées depuis OSS.
Avec la facturation à l'utilisation, l'analyse des métadonnées de la table d'objets est facturée de la même manière qu'une table interne. Pour plus d'informations, consultez Facturation SQL standard. Le traitement du contenu des données non structurées depuis OSS est facturé comme une table externe. Pour plus d'informations, consultez Facturation SQL pour les tables externes.
Dans le modèle d'abonnement, les calculs utilisent vos ressources prépayées. Pour plus d'informations, consultez Frais de calcul (abonnement).
Créer une table d'objets
Syntaxe
ODPS-0010000:System internal error -
ActionHandler job failed with failinfo storage service worker error occured:
common/io/oss/oss_file_system_cppsdk.cpp(919):
OSSRequestException: Status: -50, RequestId: ,
ErrorCode: ClientError:-50, Message: E_HTTP_ERROR_CONN_REFUSED
Les tables d'objets ne peuvent être utilisées que dans les projets où la fonctionnalité schema est activée. Vous devez également activer la syntaxe schema.
Il n'est pas nécessaire de définir les colonnes d'une table d'objets, car ses colonnes de métadonnées sont fournies par le système.
Paramètres
Paramètre | Obligatoire | Description |
objecttable_name | Oui | Nom de la table. |
SERDEPROPERTIES ('<key>'='<value>') | Oui |
Le rôle |
location | Oui |
|
TBLPROPERTIES ('<key>'='<value>') | Non |
|
comment | Non | Commentaire pour la table. |
Exemple
ODPS-0010000:System internal error -
ActionHandler job failed with failinfo storage service worker error occured:
common/io/oss/oss_file_system_cppsdk.cpp(919):
OSSRequestException: Status: -50, RequestId: ,
ErrorCode: ClientError:-50, Message: E_HTTP_ERROR_CONN_REFUSED
Afficher les propriétés de la table d'objets
Syntaxe
ODPS-0010000:System internal error -
ActionHandler job failed with failinfo storage service worker error occured:
common/io/oss/oss_file_system_cppsdk.cpp(919):
OSSRequestException: Status: -50, RequestId: ,
ErrorCode: ClientError:-50, Message: E_HTTP_ERROR_CONN_REFUSED
Paramètres
object_table_name : obligatoire. Nom de la table.
Exemple
ODPS-0010000:System internal error -
ActionHandler job failed with failinfo storage service worker error occured:
common/io/oss/oss_file_system_cppsdk.cpp(919):
OSSRequestException: Status: -50, RequestId: ,
ErrorCode: ClientError:-50, Message: E_HTTP_ERROR_CONN_REFUSED
Le résultat suivant est renvoyé :
ODPS-0010000:System internal error -
ActionHandler job failed with failinfo storage service worker error occured:
common/io/oss/oss_file_system_cppsdk.cpp(919):
OSSRequestException: Status: -50, RequestId: ,
ErrorCode: ClientError:-50, Message: E_HTTP_ERROR_CONN_REFUSED
Le tableau suivant décrit les colonnes clés du résultat.
Nom de la colonne | Type | Valeurs NULL autorisées | Description |
key | VARCHAR(2048) La clé peut comporter jusqu'à 1 023 caractères. Pour plus d'informations, consultez Règles et exemples de nommage des objets OSS. | False | Chemin relatif de l'objet dans la table d'objets. |
size | BIGINT | False | Taille de l'objet en octets. |
type | VARCHAR(32) | False | Type de l'objet dans OSS : Normal, Multipart, Appendable ou Symlink. |
last_modified | TIMESTAMP_NTZ | False | Date de dernière modification des données de l'objet dans OSS. |
storage_class | VARCHAR(32) | False | Classe de stockage de l'objet dans OSS. Pour plus d'informations, consultez Classes de stockage. |
etag | VARCHAR(64) | False | Une balise d'entité (ETag) est créée lors de la génération d'un objet. Elle sert à identifier si le contenu d'un objet a changé entre les mises à jour, mais ne constitue pas un identifiant unique. |
restore_info | VARCHAR(256) | True | Informations sur l'état de restauration d'un objet depuis le stockage froid. |
owner_id | BIGINT | True | ID du propriétaire de l'objet. |
owner_display_name | VARCHAR(256) | True | Nom d'affichage du propriétaire de l'objet. |
Afficher l'instruction CREATE TABLE
Syntaxe
ODPS-0010000:System internal error -
ActionHandler job failed with failinfo storage service worker error occured:
common/io/oss/oss_file_system_cppsdk.cpp(919):
OSSRequestException: Status: -50, RequestId: ,
ErrorCode: ClientError:-50, Message: E_HTTP_ERROR_CONN_REFUSED
Paramètres
object_table_name : obligatoire. Nom de la table.
Exemple
ODPS-0010000:System internal error -
ActionHandler job failed with failinfo storage service worker error occured:
common/io/oss/oss_file_system_cppsdk.cpp(919):
OSSRequestException: Status: -50, RequestId: ,
ErrorCode: ClientError:-50, Message: E_HTTP_ERROR_CONN_REFUSED
Le résultat suivant est renvoyé :
ODPS-0010000:System internal error -
ActionHandler job failed with failinfo storage service worker error occured:
common/io/oss/oss_file_system_cppsdk.cpp(919):
OSSRequestException: Status: -50, RequestId: ,
ErrorCode: ClientError:-50, Message: E_HTTP_ERROR_CONN_REFUSED
Actualiser les métadonnées de la table d'objets
Les données réelles d'une table d'objets sont stockées dans OSS. MaxCompute met en cache les métadonnées de ces objets et utilise ce cache pour les requêtes et les calculs. Par conséquent, vous devez actualiser le cache avant d'utiliser une table d'objets. Vous pouvez actualiser les métadonnées manuellement ou configurer des actualisations périodiques lors de la création de la table.
Les actualisations manuelles et périodiques sont toutes deux des actualisations complètes.
Actualisation manuelle
Chaque actualisation effectue une synchronisation complète des métadonnées. Vous pouvez contrôler le moment et la fréquence de ces actualisations.
-
Syntaxe
ODPS-0010000:System internal error - ActionHandler job failed with failinfo storage service worker error occured: common/io/oss/oss_file_system_cppsdk.cpp(919): OSSRequestException: Status: -50, RequestId: , ErrorCode: ClientError:-50, Message: E_HTTP_ERROR_CONN_REFUSED -
Paramètres
objecttable_name : obligatoire. Nom de la table.
-
Exemple
ODPS-0010000:System internal error - ActionHandler job failed with failinfo storage service worker error occured: common/io/oss/oss_file_system_cppsdk.cpp(919): OSSRequestException: Status: -50, RequestId: , ErrorCode: ClientError:-50, Message: E_HTTP_ERROR_CONN_REFUSED
Actualisation périodique
Si les fichiers du répertoire OSS mappé à la table d'objets changent fréquemment, vous pouvez configurer des actualisations périodiques des métadonnées. Pour réduire les coûts de maintenance, spécifiez les paramètres d'actualisation lors de la création de la table.
-
Syntaxe
ODPS-0010000:System internal error - ActionHandler job failed with failinfo storage service worker error occured: common/io/oss/oss_file_system_cppsdk.cpp(919): OSSRequestException: Status: -50, RequestId: , ErrorCode: ClientError:-50, Message: E_HTTP_ERROR_CONN_REFUSED -
Paramètres
metadata.staleness.seconds: intervalle d'actualisation. Ce paramètre est requis pour le modeperiodic. La valeur doit se situer dans la plage[1, 604800], soit de 1 seconde à 1 semaine.-
metadata.cache.mode: mode d'actualisation. Choisissez l'une des options suivantes :periodic: déclenche l'actualisation périodiquement.crontab: déclenche l'actualisation selon un planning.manual: déclenche l'actualisation manuellement (par défaut). Vous pouvez contrôler le moment du déclenchement.
Actualisation planifiée
Si les fichiers du répertoire OSS mappé à la table d'objets changent fréquemment, vous pouvez planifier des actualisations des métadonnées. Pour réduire les coûts de maintenance, spécifiez les paramètres de planification lors de la création de la table.
-
Syntaxe
ODPS-0010000:System internal error - ActionHandler job failed with failinfo storage service worker error occured: common/io/oss/oss_file_system_cppsdk.cpp(919): OSSRequestException: Status: -50, RequestId: , ErrorCode: ClientError:-50, Message: E_HTTP_ERROR_CONN_REFUSED -
Paramètres
metadata.crontab.expression: expression cron pour la tâche planifiée. Par exemple, pour déclencher une tâche une fois par jour à 14 h 00, vous pouvez définir l'expression sur0 0 14 * * ?, ce qui signifie0seconde,0minute, la14e heure (14 h 00),*pour chaque jour,*pour chaque mois et?pour un jour de la semaine non spécifié (mutuellement exclusif avec le champ jour du mois pour éviter les conflits).-
metadata.cache.mode: mode d'actualisation. Choisissez l'une des options suivantes :crontab: déclenche l'actualisation selon un planning.periodic: déclenche l'actualisation périodiquement.manual: déclenche l'actualisation manuellement (par défaut). Vous pouvez contrôler le moment du déclenchement.
Afficher les tâches d'actualisation
Exécutez la commande suivante pour afficher l'historique des tâches d'actualisation.
ODPS-0010000:System internal error -
ActionHandler job failed with failinfo storage service worker error occured:
common/io/oss/oss_file_system_cppsdk.cpp(919):
OSSRequestException: Status: -50, RequestId: ,
ErrorCode: ClientError:-50, Message: E_HTTP_ERROR_CONN_REFUSED
-
Paramètres
<object_table_name> doit être une table d'objets.
Valeurs de retour : ID de l'instance (
InstanceId), heure de création (CreateTime), heure de fin (EndTime) et état d'exécution (Status) de la tâche d'actualisation.Lorsque le Status est Failed, exécutez
wait InstanceId;pour afficher la vue des journaux et vérifier les détails de l'erreur.
-
Exemple
ODPS-0010000:System internal error - ActionHandler job failed with failinfo storage service worker error occured: common/io/oss/oss_file_system_cppsdk.cpp(919): OSSRequestException: Status: -50, RequestId: , ErrorCode: ClientError:-50, Message: E_HTTP_ERROR_CONN_REFUSED
Interroger une table d'objets
Une fois qu'une table d'objets a récupéré les métadonnées des fichiers depuis un répertoire OSS, vous pouvez interroger la table pour parcourir ces métadonnées. Vous pouvez également utiliser des instructions SQL pour effectuer des calculs sur les métadonnées, tels que l'agrégation, la jointure, les fonctions de fenêtrage, ORDER BY et LIMIT.
Syntaxe
ODPS-0010000:System internal error -
ActionHandler job failed with failinfo storage service worker error occured:
common/io/oss/oss_file_system_cppsdk.cpp(919):
OSSRequestException: Status: -50, RequestId: ,
ErrorCode: ClientError:-50, Message: E_HTTP_ERROR_CONN_REFUSED
Paramètres
object_table_name : obligatoire. Nom de la table.
Exemple
ODPS-0010000:System internal error -
ActionHandler job failed with failinfo storage service worker error occured:
common/io/oss/oss_file_system_cppsdk.cpp(919):
OSSRequestException: Status: -50, RequestId: ,
ErrorCode: ClientError:-50, Message: E_HTTP_ERROR_CONN_REFUSED
Interroger les données binaires d'objets à l'aide de pseudo-colonnes
Les pseudo-colonnes sont générées automatiquement par le système et n'ont pas besoin d'être définies lors de la création d'une table d'objets. Les données binaires d'objets peuvent être interrogées directement via des pseudo-colonnes de trois manières différentes :
-
Colonne _data
La colonne _data renvoie les données binaires complètes d'un objet, telles que le flux binaire d'une image. Son type de données est BINARY.
Les données binaires d'un seul objet ne doivent pas être trop volumineuses, car cela pourrait provoquer une erreur de mémoire insuffisante.
La colonne _data est simple à utiliser et fonctionne avec de nombreuses fonctions existantes.
Utilisation :
ODPS-0010000:System internal error - ActionHandler job failed with failinfo storage service worker error occured: common/io/oss/oss_file_system_cppsdk.cpp(919): OSSRequestException: Status: -50, RequestId: , ErrorCode: ClientError:-50, Message: E_HTTP_ERROR_CONN_REFUSED -
Colonne _blob
La colonne _blob renvoie un lien de référence pour télécharger les données binaires plutôt que les données binaires elles-mêmes. Cela diffère la lecture des données réelles afin de contrôler la consommation de mémoire lors du passage à travers les opérateurs SQL. Son type de données est Blob. Pour plus d'informations, consultez Type de données Blob et stockage multimodal.
-
Par rapport à la colonne _data, la colonne _blob offre des avantages en termes de stabilité des calculs et de consommation de ressources.
Pour les objets plus petits (moins de 1 Mo en moyenne), la colonne _data est recommandée.
Pour les objets plus volumineux, la colonne _blob est recommandée. La colonne _blob prend en charge la consommation différée et utilise moins de mémoire lorsque les données passent à travers les opérateurs SQL. Les données sont consommées sous forme de flux uniquement lorsqu'elles atteignent un opérateur ou une fonction capable de traiter le type BLOB, permettant ainsi une consommation différée et une utilisation contrôlée de la mémoire.
Utilisation :
ODPS-0010000:System internal error - ActionHandler job failed with failinfo storage service worker error occured: common/io/oss/oss_file_system_cppsdk.cpp(919): OSSRequestException: Status: -50, RequestId: , ErrorCode: ClientError:-50, Message: E_HTTP_ERROR_CONN_REFUSED -
Colonne _signed_url
La colonne _signed_url fournit une URL pour télécharger ou uploader des données binaires sans connexion. La colonne _signed_url est recommandée pour l'accès entre systèmes, programmes ou environnements hétérogènes.
Utilisation :
ODPS-0010000:System internal error - ActionHandler job failed with failinfo storage service worker error occured: common/io/oss/oss_file_system_cppsdk.cpp(919): OSSRequestException: Status: -50, RequestId: , ErrorCode: ClientError:-50, Message: E_HTTP_ERROR_CONN_REFUSED
Exemples
Colonne _data
Téléchargez le fichier de test et importez-le dans OSS : ot_test.txt.
-
Créez une table d'objets.
ODPS-0010000:System internal error - ActionHandler job failed with failinfo storage service worker error occured: common/io/oss/oss_file_system_cppsdk.cpp(919): OSSRequestException: Status: -50, RequestId: , ErrorCode: ClientError:-50, Message: E_HTTP_ERROR_CONN_REFUSED -
Lisez la colonne _data.
ODPS-0010000:System internal error - ActionHandler job failed with failinfo storage service worker error occured: common/io/oss/oss_file_system_cppsdk.cpp(919): OSSRequestException: Status: -50, RequestId: , ErrorCode: ClientError:-50, Message: E_HTTP_ERROR_CONN_REFUSED -
Consultez le contenu textuel.
ODPS-0010000:System internal error - ActionHandler job failed with failinfo storage service worker error occured: common/io/oss/oss_file_system_cppsdk.cpp(919): OSSRequestException: Status: -50, RequestId: , ErrorCode: ClientError:-50, Message: E_HTTP_ERROR_CONN_REFUSED
Colonne _blob
Téléchargez le fichier de test et importez-le dans OSS : ot_test.txt.
-
Créez une table d'objets.
ODPS-0010000:System internal error - ActionHandler job failed with failinfo storage service worker error occured: common/io/oss/oss_file_system_cppsdk.cpp(919): OSSRequestException: Status: -50, RequestId: , ErrorCode: ClientError:-50, Message: E_HTTP_ERROR_CONN_REFUSED -
Lisez la colonne _blob.
ODPS-0010000:System internal error - ActionHandler job failed with failinfo storage service worker error occured: common/io/oss/oss_file_system_cppsdk.cpp(919): OSSRequestException: Status: -50, RequestId: , ErrorCode: ClientError:-50, Message: E_HTTP_ERROR_CONN_REFUSED -
Consultez le contenu textuel.
ODPS-0010000:System internal error - ActionHandler job failed with failinfo storage service worker error occured: common/io/oss/oss_file_system_cppsdk.cpp(919): OSSRequestException: Status: -50, RequestId: , ErrorCode: ClientError:-50, Message: E_HTTP_ERROR_CONN_REFUSED
Supprimer une table d'objets
Une table d'objets met en cache les métadonnées des fichiers, ce qui consomme de l'espace de stockage et engendre des coûts. Si vous n'avez plus besoin des données mises en cache, supprimez la table d'objets. Vous pourrez la recréer ultérieurement si nécessaire.
Syntaxe
ODPS-0010000:System internal error -
ActionHandler job failed with failinfo storage service worker error occured:
common/io/oss/oss_file_system_cppsdk.cpp(919):
OSSRequestException: Status: -50, RequestId: ,
ErrorCode: ClientError:-50, Message: E_HTTP_ERROR_CONN_REFUSED
Paramètres
object_table_name : Obligatoire. Nom de la table.
Exemple
ODPS-0010000:System internal error -
ActionHandler job failed with failinfo storage service worker error occured:
common/io/oss/oss_file_system_cppsdk.cpp(919):
OSSRequestException: Status: -50, RequestId: ,
ErrorCode: ClientError:-50, Message: E_HTTP_ERROR_CONN_REFUSED
FAQ
ODPS-0010000:System internal error
-
Symptôme
Le message d'erreur suivant s'affiche :
ODPS-0010000:System internal error - ActionHandler job failed with failinfo storage service worker error occured: common/io/oss/oss_file_system_cppsdk.cpp(919): OSSRequestException: Status: -50, RequestId: , ErrorCode: ClientError:-50, Message: E_HTTP_ERROR_CONN_REFUSED -
Cause
Vous avez utilisé un endpoint public pour OSS lors de la création de la table d'objets.
-
Solution
Lorsque vous créez une table d'objets, le paramètre
oss_endpointdans le paramètrelocationdoit correspondre à un endpoint interne. Pour savoir comment obtenir un endpoint interne, consultez la section Paramètres. Si l'erreur persiste après le basculement vers un endpoint interne, contactez l'équipe de support technique MaxCompute en soumettant un ticket.
Échec de l'actualisation périodique
Symptôme
Vous avez configuré des paramètres d'actualisation périodique lors de la création de la table d'objets. Toutefois, l'actualisation ne s'exécute pas à l'intervalle spécifié.
Solution
Assurez-vous que le paramètre location configuré lors de la création de la table d'objets spécifie un endpoint interne OSS. Pour plus d'informations sur la création d'une table d'objets, consultez la section Paramètres.