Tous les produits
Search
Centre de documentation

MaxCompute:Présentation

Dernière mise à jour :Oct 10, 2026

MaxCompute propose diverses fonctions intégrées pour répondre à vos besoins métier. Si ces fonctions ne suffisent pas, créez des fonctions définies par l'utilisateur (UDF) en suivant le processus de développement et les exemples décrits dans cette rubrique.

Informations générales

Au sens large, les fonctions définies par l'utilisateur regroupent trois types : fonction scalaire définie par l'utilisateur (UDF), fonction table définie par l'utilisateur (UDTF) et fonction d'agrégation définie par l'utilisateur (UDAF). Au sens strict, le terme UDF désigne uniquement les fonctions scalaires définies par l'utilisateur. Le tableau ci-dessous présente les types d'UDF pris en charge par MaxCompute.

Type d'UDF

Nom

Scénario

UDF

fonction scalaire définie par l'utilisateur

Ce type d'UDF s'applique aux scénarios où les données d'entrée et de sortie entretiennent une relation de correspondance un-à-un. Chaque lecture d'une ligne de données par l'UDF renvoie une valeur de sortie.

UDTF

fonction table définie par l'utilisateur, également appelée UDF table

Ce type d'UDF convient aux scénarios présentant une relation de correspondance un-à-plusieurs entre les données d'entrée et de sortie. Chaque lecture d'une ligne de données par l'UDTF renvoie plusieurs valeurs, qui constituent une table.

UDAF

fonction d'agrégation définie par l'utilisateur

Les données d'entrée et de sortie d'une UDAF entretiennent une relation plusieurs-à-un. Plusieurs enregistrements d'entrée sont agrégés pour générer une seule valeur de sortie.

Outre les UDF précédentes, MaxCompute propose les types suivants pour des cas d'usage spécifiques.

Type d'UDF

Scénario

Code-embedded UDFs

Pour simplifier le développement des UDF MaxCompute et visualiser la logique du code, intégrez du code Java ou Python directement dans vos scripts SQL.

UDFs (SQL user-defined functions)

Si votre code contient des duplications, utilisez les UDF SQL pour améliorer la réutilisation du code et simplifier le processus de développement.

Geospatial UDFs

Exploitez les fonctions géospatiales Hive pour analyser des données spatiales dans MaxCompute.

Limites

  • Accès à Internet via les UDF

    Par défaut, MaxCompute n'autorise pas l'accès à Internet depuis les UDF. Pour activer cette fonctionnalité, remplissez le formulaire de demande de connexion réseau selon vos besoins métier et soumettez la demande. L'équipe support technique MaxCompute vous contactera rapidement pour établir la connectivité. Pour plus de détails sur le remplissage du formulaire, consultez la rubrique Processus de connexion réseau.

  • Accès à un VPC via les UDF

    Par défaut, MaxCompute n'autorise pas l'accès aux ressources des VPC depuis les UDF. Pour utiliser des UDF afin d'accéder aux ressources d'un VPC, établissez une connexion réseau entre MaxCompute et le VPC. Pour plus d'informations sur les opérations associées, consultez la rubrique Accéder aux ressources VPC depuis une UDF.

  • Lecture des données de table via les UDF, UDAF ou UDTF

    Il est impossible d'utiliser les UDF, UDAF ou UDTF pour lire les données des types de tables suivants :

    • Tables soumises à une évolution de schéma

    • Tables contenant des types de données complexes

    • Tables contenant des types de données JSON

    • Tables transactionnelles

Précautions

Avant d'utiliser les UDF, tenez compte des points suivants :

  • Les performances des UDF ne rivalisent pas avec celles des fonctions intégrées. Privilégiez l'utilisation des fonctions intégrées pour implémenter votre logique métier.

  • Lors de l'utilisation d'une UDF dans des instructions SQL, la consommation mémoire d'une tâche de calcul peut dépasser la taille allouée par défaut en cas de traitement volumineux et de skew des données. Dans ce cas, exécutez la commande set odps.sql.udf.joiner.jvm.memory=xxxx; au niveau de la session pour résoudre le problème. Pour plus d'informations sur les UDF, consultez la rubrique FAQ sur les UDF MaxCompute.

  • Si le nom d'une UDF identique à celui d'une fonction intégrée existe, le système appelle prioritairement l'UDF. Par exemple, si l'UDF CONCAT et la fonction intégrée CONCAT coexistent dans MaxCompute, le système appelle automatiquement l'UDF CONCAT plutôt que la fonction intégrée. Pour appeler explicitement la fonction intégrée, ajoutez le symbole :: devant son nom. Exemple : select ::concat('ab', 'c');.

Développement des UDF : outils pris en charge et processus général

Cette section détaille le développement d'une UDF, UDTF ou UDAF.

Remarque

Le processus de développement des Code-embedded UDFs, des UDFs (SQL user-defined functions) et des Geospatial UDFs diffère. Consultez la documentation associée pour plus de détails.

Utiliser Java pour développer des UDF

La figure suivante illustre le processus de développement d'une UDF MaxCompute en Java.

Java开发流程

Étape

Description

Plateforme

Précautions ou références

1

Facultatif

Avant d'écrire du code avec Maven, ajoutez les dépendances SDK appropriées au fichier POM pour garantir la compilation. Voici un exemple de dépendance SDK :

<dependency>
    <groupId>com.aliyun.odps</groupId>
    <artifactId>odps-sdk-udf</artifactId>
   <version>0.29.10-public</version>
</dependency>

Recherchez odps-sdk-udf dans les dépôts Maven pour obtenir la version de la dépendance SDK.

  • IntelliJ IDEA (Maven)

Aucune.

2

Obligatoire

Écrivez le code de l'UDF selon vos besoins métier.

Lors du développement d'UDF en Java, respectez les spécifications de développement des UDF Java. Pour plus d'informations, consultez la rubrique Spécifications de développement et processus général des UDF (Java).

3

Obligatoire

Déboguez l'UDF en l'exécutant sur votre machine locale ou via des tests unitaires afin de vérifier que le résultat correspond aux attentes.

4

Obligatoire

Déboguez le code de l'UDF pour vous assurer qu'il peut être empaqueté dans un fichier JAR après une exécution réussie sur votre machine locale.

5

Obligatoire

Téléchargez le fichier JAR en tant que ressource dans votre projet MaxCompute.

Vous disposez de trois méthodes pour télécharger les ressources et enregistrer les fonctions :

6

Obligatoire

Créez une UDF à partir du fichier JAR téléchargé.

7

Facultatif

Appelez l'UDF dans le code de requête de données.

Aucune.

Utiliser Python pour développer des UDF

La figure suivante illustre le processus de développement d'une UDF MaxCompute en Python.Python开发流程

Étape

Description

Plateforme

Précautions ou références

1

Obligatoire

Écrivez une UDF selon vos besoins métier.

Prise en main de MaxCompute Studio

Lors du développement d'UDF en Python, respectez les spécifications de développement des UDF Python. Pour plus d'informations, consultez les rubriques Spécifications de développement et processus général des UDF (Python 3) ou Spécifications de développement et processus général des UDF (Python 2).

2

Obligatoire

Déboguez l'UDF en l'exécutant sur votre machine locale ou via des tests unitaires afin de vérifier que le résultat correspond aux attentes.

3

Obligatoire

Téléchargez les fichiers Python ou les ressources requises, telles que les ressources de fichier, les ressources de table et les packages tiers, dans un projet MaxCompute.

Vous disposez de trois méthodes pour télécharger les ressources et enregistrer les fonctions :

4

Obligatoire

Créez une UDF à partir des fichiers Python ou des ressources téléchargés.

5

Facultatif

Appelez l'UDF dans le code de requête de données.

Aucune.

Référence de développement : SDK MaxCompute

Le tableau suivant décrit les SDK fournis par MaxCompute. Pour plus d'informations sur les packages inclus dans chaque SDK et les classes qu'ils contiennent, consultez la documentation MaxCompute SDK.

Nom du SDK

Description

odps-sdk-core

Fournit les classes de gestion des ressources de base de MaxCompute.

odps-sdk-commons

Fournit des utilitaires communs pour Java.

odps-sdk-udf

Fournit l'interface principale pour la fonctionnalité UDF.

odps-sdk-mapred

Fournit l'API MapReduce.

odps-sdk-graph

Fournit l'API Graph.

Appeler une UDF

Une fois l'UDF développée et enregistrée dans MaxCompute, utilisez-la lors du développement ultérieur de tâches. Utilisez les méthodes suivantes pour appeler une UDF :

  • Utiliser une UDF dans un projet MaxCompute : la méthode est similaire à celle des fonctions intégrées. Vous utilisez une fonction définie par l'utilisateur de la même manière qu'une fonction intégrée.

  • Utiliser une UDF entre projets : utilisez une UDF du projet B dans le projet A. Exemple d'instruction : select B:udf_in_other_project(arg0, arg1) as res from table_t;. Pour plus d'informations sur le partage interprojets, consultez la rubrique Accès aux ressources interprojets basé sur les packages.

Exemple de développement d'UDF