Udostępnij za pośrednictwem


Tworzenie kodu U-SQL przy użyciu języków Python, R i C# dla usługi Azure Data Lake Analytics w usłudze Visual Studio Code

Dowiedz się, jak użyć Visual Studio Code (VS Code) do pisania kodu python, R i C# za pomocą języka U-SQL i przesyłania zadań do usługi Azure Data Lake. Aby uzyskać więcej informacji na temat narzędzi Azure Data Lake Tools for VS Code, zobacz Use the Azure Data Lake Tools for Visual Studio Code (Korzystanie z Azure Data Lake Tools for Visual Studio Code).

Przed napisaniem kodu niestandardowego należy otworzyć folder lub obszar roboczy w programie VS Code.

Wymagania wstępne dotyczące języka Python i języka R

Zarejestruj zestawy języka Python i języka R dla konta usługi ADL.

  1. Otwórz konto w portalu.

    • Wybierz pozycję Omówienie.
    • Wybierz pozycję Przykładowy skrypt.
  2. Wybierz pozycję Więcej.

  3. Wybierz pozycję Zainstaluj rozszerzenia U-SQL.

  4. Komunikat potwierdzający jest wyświetlany po zainstalowaniu rozszerzeń U-SQL.

    Zrzuty ekranu przedstawiające wybieranie przykładowych skryptów w obszarze Przegląd, wybierając pozycję Więcej i Zainstaluj rozszerzenia U-SQL.

    Uwaga

    Aby uzyskać najlepsze środowiska w usłudze językowej Python i R, zainstaluj rozszerzenie VSCode Python i R.

Opracowywanie pliku w języku Python

  1. Wybierz nowy plik w obszarze roboczym.

  2. Napisz kod w języku U-SQL. Poniżej przedstawiono przykładowy kod.

    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. Kliknij prawym przyciskiem myszy plik skryptu, a następnie wybierz pozycję ADL: Generuj kod języka Python Za plikiem.

  4. Plik xxx.usql.py jest generowany w folderze roboczym. Napisz kod w pliku języka Python. Poniżej przedstawiono przykładowy kod.

    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. Kliknij prawym przyciskiem myszy plik USQL , możesz wybrać polecenie Skompiluj skrypt lub Prześlij zadanie do uruchomionego zadania.

Tworzenie pliku języka R

  1. Wybierz nowy plik w obszarze roboczym.

  2. Napisz kod w pliku U-SQL. Poniżej przedstawiono przykładowy kod.

    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. Kliknij prawym przyciskiem myszy plik USQL , a następnie wybierz pozycję ADL: Generuj kod R Za plikiem.

  4. Plik xxx.usql.r jest generowany w folderze roboczym. Napisz kod w pliku R. Poniżej przedstawiono przykładowy kod.

    load("my_model_LM_Iris.rda")
    outputToUSQL=data.frame(predict(lm.fit, inputFromUSQL, interval="confidence"))
    
  5. Kliknij prawym przyciskiem myszy plik USQL , możesz wybrać polecenie Skompiluj skrypt lub Prześlij zadanie do uruchomionego zadania.

Tworzenie pliku C#

Plik w tle jest plikiem języka C# skojarzonym z pojedynczym skryptem U-SQL. Skrypt przeznaczony dla UDO, UDA, UDT i UDF można zdefiniować w pliku za pomocą kodu. UDO, UDA, UDT i UDF można używać bezpośrednio w skryscie bez uprzedniego zarejestrowania zestawu. Plik w tle jest umieszczany w tym samym folderze co plik skryptu U-SQL komunikacji równorzędnej. Jeśli skrypt ma nazwę xxx.usql, kod jest nazwany jako xxx.usql.cs. Jeśli ręcznie usuniesz plik z tyłu kodu, funkcja za pomocą kodu jest wyłączona dla skojarzonego skryptu U-SQL. Aby uzyskać więcej informacji na temat pisania kodu klienta dla skryptu U-SQL, zobacz Pisanie i używanie kodu niestandardowego w języku U-SQL: User-Defined Functions.

  1. Wybierz nowy plik w obszarze roboczym.

  2. Napisz kod w pliku U-SQL. Poniżej przedstawiono przykładowy kod.

    @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. Kliknij prawym przyciskiem myszy plik USQL , a następnie wybierz pozycję ADL: Generuj kod CS Za plikiem.

  4. Plik xxx.usql.cs jest generowany w folderze roboczym. Napisz kod w pliku CS. Poniżej przedstawiono przykładowy kod.

    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. Kliknij prawym przyciskiem myszy plik USQL , możesz wybrać polecenie Skompiluj skrypt lub Prześlij zadanie do uruchomionego zadania.

Następne kroki