Cette rubrique explique comment référencer une ressource de fichier à l'aide de fonctions définies par l'utilisateur (UDF) Python sur le client MaxCompute.
Prérequis
Vérifiez que les conditions suivantes sont remplies :
-
Le client MaxCompute est installé et configuré.
Pour plus d'informations sur l'installation et la configuration du client MaxCompute, consultez la section Installer et configurer le client MaxCompute.
-
Le fichier que vous souhaitez référencer a été ajouté en tant que ressource à votre projet MaxCompute.
Dans cet exemple, le fichier test_distcache.txt est ajouté en tant que ressource à un projet MaxCompute. Le fichier contient les données suivantes :
1 a 2 b 3 c 4 dPour plus d'informations sur l'ajout de ressources, consultez la section Ajouter des ressources.
Procédure de développement et d'utilisation
1. Écrire une UDF
L'exemple de code suivant montre comment utiliser une UDF Python pour extraire les données répondant à des critères spécifiques du fichier test_distcache.txt.
from odps.udf import annotate
from odps.distcache import get_cache_file
@annotate('bigint->string')
class DistCacheExample(object):
def __init__(self):
cache_file = get_cache_file('test_distcache.txt')
kv = {}
for line in cache_file:
line = line.strip()
if not line:
continue
k, v = line.split()
kv[int(k)] = v
cache_file.close()
self.kv = kv
def evaluate(self, arg):
return self.kv.get(arg)
Enregistrez l'exemple de code précédent sous forme de script Python et placez-le dans le répertoire bin du client MaxCompute. Dans cet exemple, le script Python se nomme file.py.
2. Télécharger les ressources et créer l'UDF
Une fois le code de l'UDF développé et débogué, téléchargez les ressources vers MaxCompute via le client MaxCompute, puis créez l'UDF.
-
Exécutez la commande suivante pour ajouter le fichier de script Python en tant que ressource à MaxCompute :
add py file.py;Le résultat suivant s'affiche :
OK: Resource 'file.py' have been created.Pour plus d'informations sur les commandes permettant d'ajouter des ressources à MaxCompute, consultez la section Ajouter des ressources.
-
Exécutez la commande suivante pour créer une UDF Python :
create function file_udf as 'file.DistCacheExample' using 'file.py, test_distcache.txt';Description des paramètres :
file_udf: nom de l'UDF Python à créer. Cette fonction sera ensuite appelée dans une instruction SQL.file.DistCacheExample:filecorrespond au nom du script file.py.DistCacheExampledésigne la classe définie dans le script file.py.
Le résultat suivant s'affiche :
Success: Function 'file_udf' have been created.Pour plus d'informations sur la création d'UDF, consultez la section Créer une UDF.
3. Utiliser l'UDF
Une fois l'UDF créée, exécutez les commandes suivantes pour générer des données de test et appeler l'UDF :
-- Create a test table.
create table file_table (arg bigint);
-- Insert data into the table.
insert into file_table values (1), (4), (15), (123), (7995);
-- Call the created function in the SQL statement to obtain the data that meets the specific requirements from the file resource.
select file_udf(arg) from file_table;
Le résultat suivant s'affiche :
+-----+
| _c0 |
+-----+
| a |
| d |
| NULL |
| NULL |
| NULL |
+-----+