Partager via


É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.

Étapes suivantes