Aracılığıyla paylaş


Visual Studio Code'da Azure Data Lake Analytics için Python, R ve C# ile U-SQL geliştirme

U-SQL ile arka planda Python, R ve C# kodu yazmak ve Azure Data Lake hizmetine iş göndermek için Visual Studio Code (VS Code) kullanmayı öğrenin. VS Code için Azure Data Lake Araçları hakkında daha fazla bilgi için bkz. Visual Studio için Azure Data Lake Araçları Kodunu Kullanma.

Arka planda kod yazmadan önce, VS Code'da bir klasör veya çalışma alanı açmanız gerekir.

Python ve R önkoşulları

ADL hesabınız için Python ve R uzantı derlemelerini kaydedin.

  1. Hesabınızı portalda açın.

    • Genel bakış'ı seçin.
    • Örnek Betik'i seçin.
  2. Diğer'i seçin.

  3. U-SQL Uzantılarını Yükle'yi seçin.

  4. U-SQL uzantıları yüklendikten sonra onay iletisi görüntülenir.

    Genel Bakış'ta Örnek Betikler'i, Diğer'i ve U-SQL Uzantılarını Yükle'yi seçmeyi gösteren ekran görüntüleri.

    Not

    Python ve R dil hizmetiyle ilgili en iyi deneyimler için lütfen VSCode Python ve R uzantısını yükleyin.

Python dosyası geliştirme

  1. Çalışma alanınızda Yeni Dosya'ya tıklayın.

  2. Kodunuzu U-SQL'de yazın. Aşağıda bir kod örneği verilmiştir.

    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. Bir betik dosyasına sağ tıklayın ve ardından ADL: Dosyanın Arkasında Python Kodu Oluştur'u seçin.

  4. xxx.usql.py dosyası çalışma klasörünüzde oluşturulur. Kodunuzu Python dosyasına yazın. Aşağıda bir kod örneği verilmiştir.

    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. USQL dosyasına sağ tıklayın, Betiği Derle'yi veya İşi çalışan işe gönder'i seçebilirsiniz.

R dosyası geliştirme

  1. Çalışma alanınızda Yeni Dosya'ya tıklayın.

  2. Kodunuzu U-SQL dosyasına yazın. Aşağıda bir kod örneği verilmiştir.

    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. USQL dosyasına sağ tıklayın ve ADL: Dosyanın Arkasında R Kodu Oluştur'u seçin.

  4. xxx.usql.r dosyası çalışma klasörünüzde oluşturulur. Kodunuzu R dosyasına yazın. Aşağıda bir kod örneği verilmiştir.

    load("my_model_LM_Iris.rda")
    outputToUSQL=data.frame(predict(lm.fit, inputFromUSQL, interval="confidence"))
    
  5. USQL dosyasına sağ tıklayın, Betiği Derle'yi veya İşi çalışan işe gönder'i seçebilirsiniz.

C# dosyası geliştirme

Arka planda kod dosyası, tek bir U-SQL betiğiyle ilişkilendirilmiş bir C# dosyasıdır. Arka planda kod dosyasında UDO, UDA, UDT ve UDF'ye ayrılmış bir betik tanımlayabilirsiniz. UDO, UDA, UDT ve UDF, derlemeyi kaydetmeden doğrudan betikte kullanılabilir. Arkadaki kod dosyası, eşleme U-SQL betik dosyasıyla aynı klasöre konur. Betiğin adı xxx.usql ise, arkadaki kod xxx.usql.cs olarak adlandırılır. Arka planda kod dosyasını el ile silerseniz, ilişkili U-SQL betiği için arka planda kod özelliği devre dışı bırakılır. U-SQL betiği için müşteri kodu yazma hakkında daha fazla bilgi için bkz. U-SQL'de Özel Kod Yazma ve Kullanma: User-Defined İşlevleri.

  1. Çalışma alanınızda Yeni Dosya'ya tıklayın.

  2. Kodunuzu U-SQL dosyasına yazın. Aşağıda bir kod örneği verilmiştir.

    @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. USQL dosyasına sağ tıklayın ve ADL: Dosyanın Arkasında CS Kodu Oluştur'u seçin.

  4. xxx.usql.cs dosyası çalışma klasörünüzde oluşturulur. Kodunuzu CS dosyasına yazın. Aşağıda bir kod örneği verilmiştir.

    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. USQL dosyasına sağ tıklayın, Betiği Derle'yi veya İşi çalışan işe gönder'i seçebilirsiniz.

Sonraki adımlar