Visual Studio Code에서 Python, R 및 C#를 사용하여 Azure Data Lake Analytics용 U-SQL 개발

VS Code(Visual Studio Code)를 사용하여 U-SQL을 사용하여 Python, R 및 C# 코드를 작성하고 Azure Data Lake 서비스에 작업을 제출하는 방법을 알아봅니다. VS Code용 Azure Data Lake Tools에 대한 자세한 내용은 Azure Data Lake Tools for Visual Studio 코드 사용을 참조하세요.

코드 숨김 사용자 지정 코드를 작성하기 전에 VS Code에서 폴더 또는 작업 영역을 열어야 합니다.

Python 및 R에 대한 필수 구성 요소

ADL 계정에 대한 Python 및 R 확장 어셈블리를 등록합니다.

  1. 포털에서 계정을 엽니다.

    • 개요를 선택합니다.
    • 샘플 스크립트를 선택합니다.
  2. 자세히를 선택합니다.

  3. U-SQL 확장 설치를 선택합니다.

  4. U-SQL 확장이 설치된 후에 확인 메시지가 표시됩니다.

    개요에서 샘플 스크립트 선택, 자세히 선택, U-SQL 확장 설치를 보여 주는 스크린샷

    참고

    Python 및 R 언어 서비스에 대한 최상의 환경을 얻으려면 VSCode Python 및 R 확장을 설치하세요.

Python 파일 개발

  1. 작업 영역에서 새 파일을 선택합니다.

  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. 작업 영역에서 새 파일을 선택합니다.

  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# 파일 개발

코드 숨김 파일은 단일 U-SQL 스크립트와 연결되는 C# 파일입니다. 코드 숨김 파일에서는 UDO, UDA, UDT 및 UDF 전용 스크립트를 정의할 수 있습니다. 먼저 어셈블리를 등록하지 않고도 스크립트에서 UDO, UDA, UDT 및 UDF를 직접 사용할 수 있습니다. 코드 숨김 파일은 피어링 U-SQL 스크립트 파일과 동일한 폴더에 저장됩니다. 스크립트 파일 이름이 xxx.usql이면 코드 숨김 파일 이름은 xxx.usql.cs가 됩니다. 코드 숨김 파일을 수동으로 삭제하면 연결된 U-SQL 스크립트의 코드 숨김 기능을 사용할 수 없게 됩니다. U-SQL 스크립트의 고객 코드 만들기에 대한 자세한 내용은 U-SQL에서 사용자 지정 코드 만들기 및 사용: 사용자 정의 함수를 참조하세요.

  1. 작업 영역에서 새 파일을 선택합니다.

  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 파일에서 마우스 오른쪽 단추로 클릭하면 작업 실행에 대한 스크립트 컴파일 또는 작업 제출을 선택할 수 있습니다.

다음 단계