Condividi tramite


Sviluppare U-SQL con Python, R e C# per Azure Data Lake Analytics in Visual Studio Code

Informazioni su come usare Visual Studio Code (VS Code) per scrivere codice Python, R e C# con U-SQL e inviare processi al servizio Azure Data Lake. Per altre informazioni su Azure Data Lake Tools per VS Code, vedere Usare Azure Data Lake Tools per Visual Studio Code.

Prima di scrivere codice personalizzato code-behind, è necessario aprire una cartella o un'area di lavoro in VS Code.

Prerequisiti per Python e R

Registrare gli assembly di estensioni Python e R per l'account ADL.

  1. Aprire l'account nel portale.

    • Selezionare Panoramica.
    • Selezionare script di esempio.
  2. Selezionare Altro.

  3. Selezionare Installa Estensioni U-SQL.

  4. Il messaggio di conferma viene visualizzato dopo l'installazione delle estensioni U-SQL.

    Schermate che mostrano la selezione di Script di esempio in Panoramica, selezionando Altro e Installa estensioni U-SQL.

    Nota

    Per esperienze ottimali nel servizio di linguaggio Python e R, installare l'estensione Python e R di VSCode.

Sviluppare un file Python

  1. Selezionare il Nuovo File nell'area di lavoro.

  2. Scrivere il codice in U-SQL. Di seguito è riportato un esempio di codice.

    REFERENCE ASSEMBLY [ExtPython];
    @t  = 
        SELECT * FROM 
        (VALUES
            ("D1","T1","A1","@foo Hello World @bar"),
            ("D2","T2","A2","@baz Hello World @beer")
        ) AS 
            D( date, time, author, tweet );
    
    @m  =
        REDUCE @t ON date
        PRODUCE date string, mentions string
        USING new Extension.Python.Reducer("pythonSample.usql.py", pyVersion : "3.5.1");
    
    OUTPUT @m
        TO "/tweetmentions.csv"
        USING Outputters.Csv();
    
  3. Fare clic con il pulsante destro del mouse su un file di script e quindi selezionare ADL: Generate Python Code Behind File.

  4. Il file xxx.usql.py viene generato nella cartella di lavoro. Scrivere il codice nel file Python. Di seguito è riportato un esempio di codice.

    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
    
  5. Fare clic con il pulsante destro del mouse nel file USQL, selezionare Compila Script o Invia processo per eseguire il processo.

Sviluppa il file R

  1. Seleziona il file Nuovo nell'area di lavoro.

  2. Scrivere il codice nel file U-SQL. Di seguito è riportato un esempio di codice.

    DEPLOY RESOURCE @"/usqlext/samples/R/my_model_LM_Iris.rda";
    DECLARE @IrisData string = @"/usqlext/samples/R/iris.csv";
    DECLARE @OutputFilePredictions string = @"/my/R/Output/LMPredictionsIris.txt";
    DECLARE @PartitionCount int = 10;
    
    @InputData =
        EXTRACT SepalLength double,
                SepalWidth double,
                PetalLength double,
                PetalWidth double,
                Species string
        FROM @IrisData
        USING Extractors.Csv();
    
    @ExtendedData =
        SELECT Extension.R.RandomNumberGenerator.GetRandomNumber(@PartitionCount) AS Par,
            SepalLength,
            SepalWidth,
            PetalLength,
            PetalWidth
        FROM @InputData;
    
    // Predict Species
    
    @RScriptOutput =
        REDUCE @ExtendedData
        ON Par
        PRODUCE Par,
                fit double,
                lwr double,
                upr double
        READONLY Par
        USING new Extension.R.Reducer(scriptFile : "RClusterRun.usql.R", rReturnType : "dataframe", stringsAsFactors : false);
    OUTPUT @RScriptOutput
    TO @OutputFilePredictions
    USING Outputters.Tsv();
    
  3. Fare clic con il pulsante destro del mouse in file USQL e quindi selezionare ADL: Generate R Code Behind File.

  4. Il file xxx.usql.r viene generato nella cartella di lavoro. Scrivere il codice nel file R. Di seguito è riportato un esempio di codice.

    load("my_model_LM_Iris.rda")
    outputToUSQL=data.frame(predict(lm.fit, inputFromUSQL, interval="confidence"))
    
  5. Fare clic con il pulsante destro del mouse nel file USQL, selezionare Compila script o Invia processo per eseguire il processo.

Sviluppare un file C#

Un file code-behind è un file C# associato a un singolo script U-SQL. È possibile definire uno script dedicato a UDO, UDA, UDT e UDF nel file code-behind. L'UDO, l'UDA, l'UDT e l'UDF possono essere usati direttamente nello script senza prima registrare l'assembly. Il file code-behind viene inserito nella stessa cartella del relativo file di script U-SQL. Se lo script è denominato xxx.usql, il code-behind viene denominato xxx.usql.cs. Se si elimina manualmente il file code-behind, la funzionalità code-behind è disabilitata per lo script U-SQL associato. Per altre informazioni sulla scrittura di codice cliente per lo script U-SQL, vedere Scrittura e uso di codice personalizzato in U-SQL: funzioni User-Defined.

  1. Selezionare il Nuovo File nell'area di lavoro.

  2. Scrivere il codice nel file U-SQL. Di seguito è riportato un esempio di codice.

    @a = 
        EXTRACT 
            Iid int,
        Starts DateTime,
        Region string,
        Query string,
        DwellTime int,
        Results string,
        ClickedUrls string 
        FROM @"/Samples/Data/SearchLog.tsv" 
        USING Extractors.Tsv();
    
    @d =
        SELECT DISTINCT Region 
        FROM @a;
    
    @d1 = 
        PROCESS @d
        PRODUCE 
            Region string,
        Mkt string
        USING new USQLApplication_codebehind.MyProcessor();
    
    OUTPUT @d1 
        TO @"/output/SearchLogtest.txt" 
        USING Outputters.Tsv();
    
  3. Fare clic con il pulsante destro del mouse nel file USQL e quindi selezionare ADL: Generate CS Code Behind File.

  4. Il file xxx.usql.cs viene generato nella cartella di lavoro. Scrivere il codice nel file CS. Di seguito è riportato un esempio di codice.

    namespace USQLApplication_codebehind
    {
        [SqlUserDefinedProcessor]
    
        public class MyProcessor : IProcessor
        {
            public override IRow Process(IRow input, IUpdatableRow output)
            {
                output.Set(0, input.Get<string>(0));
                output.Set(1, input.Get<string>(0));
                return output.AsReadOnly();
            } 
        }
    }
    
  5. Fare clic con il pulsante destro del mouse nel file USQL, è possibile selezionare Compila script o Invia processo per eseguire il processo.

Passaggi successivi