Étendre des scripts U-SQL à l’aide de code Python dans Azure Data Lake Analytics
Important
Azure Data Lake Analytics mis hors service le 29 février 2024. Découvrez-en plus avec cette annonce.
Pour l’analytique des données, votre organization peut utiliser Azure Synapse Analytics ou Microsoft Fabric.
Prérequis
Avant de commencer, vérifiez que les extensions Python sont installées dans votre compte Azure Data Lake Analytics.
- Accédez à votre compte Data Lake Analytics dans le Portail Azure
- Dans le menu de gauche, sous PRISE EN MAIN , sélectionnez Exemples de scripts
- Sélectionnez Installer les extensions U-SQL , puis OK
Vue d’ensemble
Les extensions de Python pour U-SQL permettent aux développeurs d’effectuer une exécution parallèle massive de code Python. L'exemple suivant illustre les étapes de base :
- Utilisation de l’instruction
REFERENCE ASSEMBLY
pour activer les extensions Python pour le script U-SQL - Utilisation de l’opération
REDUCE
pour partitionner les données d’entrée sur une clé - Les extensions de Python pour U-SQL comprennent un réducteur intégré (
Extension.Python.Reducer
) qui exécute le code Python sur chaque vertex affecté au réducteur - Le script U-SQL contient le code Python incorporé qui a une fonction appelée
usqlml_main
qui accepte un tableau de données Pandas en tant qu’entrée et retourne un tableau de données Pandas en tant que sortie.
REFERENCE ASSEMBLY [ExtPython];
DECLARE @myScript = @"
def get_mentions(tweet):
return ';'.join( ( w[1:] for w in tweet.split() if w[0]=='@' ) )
def usqlml_main(df):
del df['time']
del df['author']
df['mentions'] = df.tweet.apply(get_mentions)
del df['tweet']
return df
";
@t =
SELECT * FROM
(VALUES
("D1","T1","A1","@foo Hello World @bar"),
("D2","T2","A2","@baz Hello World @beer")
) AS date, time, author, tweet );
@m =
REDUCE @t ON date
PRODUCE date string, mentions string
USING new Extension.Python.Reducer(pyScript:@myScript);
OUTPUT @m
TO "/tweetmentions.csv"
USING Outputters.Csv();
Intégration de Python à U-SQL
Types de données
- Les colonnes numériques et de chaîne de U-SQL sont converties telles quelles-entre Pandas et U-SQL
- Les valeurs null de U-SQL sont converties en valeurs Pandas
NA
et à vice versa
Schémas
- Les vecteurs d’index dans Pandas ne sont pas pris en charge dans U-SQL. Tous les tableaux de données d’entrée dans la fonction Python ont toujours un index numérique de 64 bits compris entre 0 et le nombre de lignes moins 1.
- Les jeux de données U-SQL ne peuvent pas avoir de noms de colonnes en double
- Les noms de colonnes des jeux de données U-SQL qui ne sont pas des chaînes.
Versions de Python
Seul Python 3.5.1 (compilé pour Windows) est pris en charge.
Modules Python standard
Tous les modules Python standard sont inclus.
Autres modules Python
Outre les bibliothèques Python standard, plusieurs bibliothèques python couramment utilisées sont incluses :
- pandas
- numpy
- numexpr
Messages d’exception
Actuellement, une exception dans le code Python apparaît comme un échec de vertex générique. À l’avenir, les messages d’erreur de tâches U-SQL afficheront le message d’exception Python.
Limitations de taille d’entrée et de sortie
Chaque vertex possède une quantité limitée de mémoire qui lui est assignée. Actuellement, cette limite est de 6 Go pour une mise à jour automatique. Étant donné que les DataFrames d’entrée et de sortie doivent exister en mémoire dans le code Python, la taille totale de l’entrée et de la sortie ne peut pas dépasser 6 Go.