Tous les produits
Search
Centre de documentation

MaxCompute:Vue d'ensemble

Dernière mise à jour :Sep 17, 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 se divisent en trois catégories : 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 de UDF pris en charge par MaxCompute.

Type de UDF

Nom

Scénario

UDF

fonction scalaire définie par l'utilisateur

Ce type de UDF convient aux scénarios où les données d'entrée et de sortie entretiennent une relation de correspondance un-à-un. Chaque ligne de données lue par la UDF génère une valeur de sortie unique.

UDTF

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

Utilisez ce type de UDF lorsque les données d'entrée et de sortie suivent une relation un-à-plusieurs. La lecture d'une seule ligne de données par une UDTF produit plusieurs valeurs, formant ainsi une table.

UDAF

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

Une UDAF établit une correspondance plusieurs-à-un entre les données d'entrée et de sortie. Elle agrège plusieurs enregistrements d'entrée pour produire une seule valeur de sortie.

Outre les UDF mentionnées précédemment, MaxCompute met à disposition les types suivants pour des cas d'usage spécifiques.

Type de UDF

Scénario

Code-embedded UDFs

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

UDFs (SQL user-defined functions)

Si votre code contient des duplicatas, privilégiez les UDF SQL afin d'améliorer la réutilisabilité du code et de simplifier le processus de développement.

Geospatial UDFs

Analysez vos données spatiales dans MaxCompute à l'aide des fonctions géospatiales Hive.

Limites

  • Accès à Internet via les UDF

    Par défaut, MaxCompute interdit l'accès à Internet depuis les UDF. Pour autoriser cet accès, remplissez le formulaire de demande de connexion réseau selon vos besoins métier et soumettez la demande. L'équipe support technique de MaxCompute vous contactera rapidement pour activer la connectivité réseau. 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 situées dans 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 concerné. 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 des 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 des UDF, tenez compte des points suivants :

  • Les performances des UDF restent inférieures à celles des fonctions intégrées. Privilégiez toujours les fonctions intégrées pour implémenter votre logique métier.

  • Lorsque vous utilisez 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 si le volume de données traité est important et qu'un skew de données survient. 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 une UDF porte le même nom qu'une fonction intégrée, le système appelle prioritairement la UDF. Par exemple, si une UDF CONCAT et la fonction intégrée CONCAT coexistent dans MaxCompute, le système invoque automatiquement la UDF CONCAT plutôt que la fonction intégrée. Pour appeler explicitement la fonction intégrée, faites précéder son nom du symbole ::. Exemple : select ::concat('ab', 'c');.

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

Cette section détaille la marche à suivre pour développer une UDF, une UDTF ou une 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.

Développer des UDF avec Java

Le schéma ci-dessous 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 afin de garantir la compilation du code. L'exemple suivant illustre une 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

Rédigez le code de la UDF en fonction de vos besoins métier.

Lors du développement de UDF en Java, respectez impérativement 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 la 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 la UDF pour vous assurer qu'il sera correctement 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 des ressources et enregistrer des fonctions :

6

Obligatoire

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

7

Facultatif

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

Aucune.

Développer des UDF avec Python

Le schéma ci-dessous illustre le processus de développement d'une UDF MaxCompute en Python.Python开发流程

Étape

Description

Plateforme

Précautions ou références

1

Obligatoire

Rédigez une UDF en fonction de vos besoins métier.

MaxCompute Studio

Lors du développement de UDF en Python, respectez impérativement 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 la 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 des ressources et enregistrer des fonctions :

4

Obligatoire

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

5

Facultatif

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

Aucune.

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

Le tableau ci-dessous décrit les SDK fournis par MaxCompute. Pour plus d'informations sur les packages inclus dans chaque SDK et les classes contenues dans ces packages, consultez la documentation MaxCompute SDK.

Nom du SDK

Description

odps-sdk-core

Fournit les classes permettant de gérer les ressources de base de MaxCompute.

odps-sdk-commons

Propose des utilitaires communs pour Java.

odps-sdk-udf

Fournit l'interface principale pour la fonctionnalité UDF.

odps-sdk-mapred

Propose l'API MapReduce.

odps-sdk-graph

Propose l'API Graph.

Appeler une UDF

Une fois la UDF développée et enregistrée dans MaxCompute, utilisez-la lors des étapes suivantes du développement de jobs. Voici les méthodes disponibles 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 : appelez une UDF du projet B depuis le projet A. L'instruction suivante illustre cet exemple : 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 de UDF