Partager via


Étendre des scripts U-SQL avec du code Python dans Azure Data Lake Analytics

Important

Azure Data Lake Analytics a pris sa retraite le 29 février 2024. En savoir plus avec cette annonce.

Pour l’analytique des données, votre organisation peut utiliser Azure Synapse Analytics ou Microsoft Fabric.

Conditions préalables

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 Démarrage sélectionnez Exemples de scripts
  • Sélectionnez Installer les extensions U-SQL puis OK

Aperçu

Les extensions Python pour U-SQL permettent aux développeurs d’effectuer une exécution massivement parallèle du code Python. L’exemple suivant illustre les étapes de base :

  • Utilisez l’instruction REFERENCE ASSEMBLY pour activer les extensions Python pour le script U-SQL
  • Utilisation de l’opération de REDUCE pour partitionner les données d’entrée sur une clé
  • Les extensions Python pour U-SQL incluent un réducteur intégré (Extension.Python.Reducer) qui exécute du 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 DataFrame pandas comme entrée et retourne un DataFrame pandas comme 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 de chaîne et numériques de U-SQL sont converties as-is entre Pandas et U-SQL
  • Les valeurs Null de U-SQL sont converties en valeurs NA Pandas et inversement.

Schémas

  • Les vecteurs d’index dans Pandas ne sont pas pris en charge dans U-SQL. Toutes les trames de données d’entrée de la fonction Python ont toujours un index numérique 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
  • 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 une défaillance de vertex générique. À l’avenir, les messages d’erreur de travail U-SQL affichent le message d’exception Python.

Limitations de taille d’entrée et de sortie

Chaque vertex a une quantité limitée de mémoire qui lui est affectée. Actuellement, cette limite est de 6 Go pour une AU. É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.

Étapes suivantes