تطوير U-SQL باستخدام Python وR وC# ل Azure Data Lake Analytics في Visual Studio Code

تعرف على كيفية استخدام Visual Studio Code (VS Code) لكتابة التعليمات البرمجية Python وR وC# في الخلف مع U-SQL وإرسال المهام إلى خدمة Azure Data Lake. لمزيد من المعلومات حول Azure Data Lake Tools ل VS Code، راجع استخدام أدوات Azure Data Lake ل Visual Studio Code.

قبل كتابة التعليمات البرمجية المخصصة في الخلف، تحتاج إلى فتح مجلد أو مساحة عمل في VS Code.

المتطلبات الأساسية ل Python وR

تسجيل تجميعات ملحقات Python وR لحساب ADL الخاص بك.

  1. افتح حسابك في المدخل.

    • حدد ⁧⁩Overview⁧⁩.
    • حدد نموذج البرنامج النصي.
  2. حدد المزيد.

  3. حدد تثبيت ملحقات U-SQL.

  4. يتم عرض رسالة التأكيد بعد تثبيت ملحقات U-SQL.

    لقطة شاشة تعرض تحديد نماذج البرامج النصية في نظرة عامة، وتحديد المزيد وتثبيت ملحقات U-SQL.

    ملاحظة

    للحصول على أفضل التجارب حول خدمة لغة Python وR، يرجى تثبيت ملحق VSCode Python وR.

تطوير ملف Python

  1. حدد New File في مساحة العمل الخاصة بك.

  2. اكتب التعليمات البرمجية الخاصة بك في U-SQL. فيما يلي نموذج التعليمات البرمجية.

    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. انقر بزر الماوس الأيمن فوق ملف برنامج نصي، ثم حدد ADL: Generate Python Code Behind File.

  4. يتم إنشاء ملف xxx.usql.py في مجلد العمل الخاص بك. اكتب التعليمات البرمجية الخاصة بك في ملف Python. فيما يلي نموذج التعليمات البرمجية.

    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 ، يمكنك تحديد التحويل البرمجي للبرنامج النصي أو إرسال المهمة إلى مهمة قيد التشغيل.

تطوير ملف R

  1. حدد New File في مساحة العمل الخاصة بك.

  2. اكتب التعليمات البرمجية الخاصة بك في ملف U-SQL. فيما يلي نموذج التعليمات البرمجية.

    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 ، ثم حدد ADL: Generate R Code Behind File.

  4. يتم إنشاء ملف xxx.usql.r في مجلد العمل الخاص بك. اكتب التعليمات البرمجية في ملف R. فيما يلي نموذج التعليمات البرمجية.

    load("my_model_LM_Iris.rda")
    outputToUSQL=data.frame(predict(lm.fit, inputFromUSQL, interval="confidence"))
    
  5. انقر بزر الماوس الأيمن في ملف USQL ، يمكنك تحديد التحويل البرمجي للبرنامج النصي أو إرسال المهمة إلى مهمة قيد التشغيل.

تطوير ملف C#‎

ملف التعليمات البرمجية في الخلف هو ملف C# مقترن مع برنامج نصي U-SQL واحد. يمكنك تعريف برنامج نصي مخصص ل UDO وUDA وUDT وUDF في ملف التعليمات البرمجية في الخلف. يمكن استخدام UDO وUDA وUDT وUDT مباشرة في البرنامج النصي دون تسجيل التجميع أولا. يتم وضع ملف التعليمات البرمجية في الخلف في نفس المجلد مثل ملف البرنامج النصي U-SQL النظير الخاص به. إذا كان البرنامج النصي يسمى xxx.usql، تتم تسمية التعليمات البرمجية في الخلف على أنها xxx.usql.cs. إذا قمت بحذف ملف التعليمات البرمجية في الخلف يدويا، يتم تعطيل ميزة التعليمات البرمجية الخلفية للبرنامج النصي U-SQL المقترن بها. لمزيد من المعلومات حول كتابة التعليمات البرمجية للعميل للبرنامج النصي U-SQL، راجع كتابة واستخدام التعليمات البرمجية المخصصة في U-SQL: User-Defined Functions.

  1. حدد New File في مساحة العمل الخاصة بك.

  2. اكتب التعليمات البرمجية الخاصة بك في ملف U-SQL. فيما يلي نموذج التعليمات البرمجية.

    @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 ، ثم حدد ADL: Generate CS Code Behind File.

  4. يتم إنشاء ملف xxx.usql.cs في مجلد العمل الخاص بك. اكتب التعليمات البرمجية في ملف CS. فيما يلي نموذج التعليمات البرمجية.

    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 ، يمكنك تحديد التحويل البرمجي للبرنامج النصي أو إرسال المهمة إلى مهمة قيد التشغيل.

الخطوات التالية