Azure Data Lake Analytics .NET 앱 관리Manage Azure Data Lake Analytics a .NET app

이 문서에서는 Azure .NET SDK를 사용하여 작성한 앱을 사용하여 Azure Data Lake Analytics 계정, 데이터 원본, 사용자 및 작업을 관리하는 방법을 설명합니다.This article describes how to manage Azure Data Lake Analytics accounts, data sources, users, and jobs using an app written using the Azure .NET SDK.

사전 요구 사항Prerequisites

  • Visual C++ 설치 된 Visual studio 2015, Visual Studio 2013 업데이트 4 또는 Visual studio 2012Visual Studio 2015, Visual Studio 2013 update 4, or Visual Studio 2012 with Visual C++ Installed.
  • .NET 버전 2.5 이상용 Microsoft Azure SDK.Microsoft Azure SDK for .NET version 2.5 or above. 웹 플랫폼 설치 관리자를 사용 하 여 설치 합니다.Install it using the Web platform installer.
  • 필요한 NuGet 패키지Required NuGet Packages

NuGet 패키지 설치Install NuGet packages

패키지Package 버전Version
Microsoft.Rest.ClientRuntime.Azure.AuthenticationMicrosoft.Rest.ClientRuntime.Azure.Authentication 2.3.12.3.1
Microsoft.Azure.Management.DataLake.AnalyticsMicrosoft.Azure.Management.DataLake.Analytics 3.0.03.0.0
Microsoft.Azure.Management.DataLake.StoreMicrosoft.Azure.Management.DataLake.Store 2.2.02.2.0
Microsoft.Azure.Management.ResourceManagerMicrosoft.Azure.Management.ResourceManager 1.6.0-preview1.6.0-preview
Microsoft.Azure.Graph.RBACMicrosoft.Azure.Graph.RBAC 3.4.0-preview3.4.0-preview

NuGet 명령줄을 통해 다음 명령을 사용하여 이러한 패키지를 설치할 수 있습니다.You can install these packages via the NuGet command line with the following commands:

Install-Package -Id Microsoft.Rest.ClientRuntime.Azure.Authentication  -Version 2.3.1
Install-Package -Id Microsoft.Azure.Management.DataLake.Analytics  -Version 3.0.0
Install-Package -Id Microsoft.Azure.Management.DataLake.Store  -Version 2.2.0
Install-Package -Id Microsoft.Azure.Management.ResourceManager  -Version 1.6.0-preview
Install-Package -Id Microsoft.Azure.Graph.RBAC -Version 3.4.0-preview

일반적인 변수Common variables

string subid = "<Subscription ID>"; // Subscription ID (a GUID)
string tenantid = "<Tenant ID>"; // AAD tenant ID or domain. For example, "contoso.onmicrosoft.com"
string rg == "<value>"; // Resource  group name
string clientid = "1950a258-227b-4e31-a9cf-717495945fc2"; // Sample client ID (this will work, but you should pick your own)

인증Authentication

Azure Data Lake Analytics에 로그온하는 옵션은 여러 가지가 있습니다.You have multiple options for logging on to Azure Data Lake Analytics. 다음 코드 조각은 팝업을 사용한 대화형 사용자 인증의 인증 예를 보여 줍니다.The following snippet shows an example of authentication with interactive user authentication with a pop-up.

using System;
using System.IO;
using System.Threading;
using System.Security.Cryptography.X509Certificates;

using Microsoft.Rest;
using Microsoft.Rest.Azure.Authentication;
using Microsoft.Azure.Management.DataLake.Analytics;
using Microsoft.Azure.Management.DataLake.Analytics.Models;
using Microsoft.Azure.Management.DataLake.Store;
using Microsoft.Azure.Management.DataLake.Store.Models;
using Microsoft.IdentityModel.Clients.ActiveDirectory;
using Microsoft.Azure.Graph.RBAC;

public static Program
{
   public static string TENANT = "microsoft.onmicrosoft.com";
   public static string CLIENTID = "1950a258-227b-4e31-a9cf-717495945fc2";
   public static System.Uri ARM_TOKEN_AUDIENCE = new System.Uri( @"https://management.core.windows.net/");
   public static System.Uri ADL_TOKEN_AUDIENCE = new System.Uri( @"https://datalake.azure.net/" );
   public static System.Uri GRAPH_TOKEN_AUDIENCE = new System.Uri( @"https://graph.windows.net/" );

   static void Main(string[] args)
   {
      string MY_DOCUMENTS= System.Environment.GetFolderPath( System.Environment.SpecialFolder.MyDocuments);
      string TOKEN_CACHE_PATH = System.IO.Path.Combine(MY_DOCUMENTS, "my.tokencache");

      var tokenCache = GetTokenCache(TOKEN_CACHE_PATH);
      var armCreds = GetCreds_User_Popup(TENANT, ARM_TOKEN_AUDIENCE, CLIENTID, tokenCache);
      var adlCreds = GetCreds_User_Popup(TENANT, ADL_TOKEN_AUDIENCE, CLIENTID, tokenCache);
      var graphCreds = GetCreds_User_Popup(TENANT, GRAPH_TOKEN_AUDIENCE, CLIENTID, tokenCache);
   }
}

GetCreds_User_Popup의 소스 코드와 인증에 대한 다른 옵션 코드는 Data Lake Analytics .NET authentication options(Data Lake Analytics .NET 인증 옵션)에 설명되어 있습니다.The source code for GetCreds_User_Popup and the code for other options for authentication are covered in Data Lake Analytics .NET authentication options

클라이언트 관리 개체 만들기Create the client management objects

var resourceManagementClient = new ResourceManagementClient(armCreds) { SubscriptionId = subid };

var adlaAccountClient = new DataLakeAnalyticsAccountManagementClient(armCreds);
adlaAccountClient.SubscriptionId = subid;

var adlsAccountClient = new DataLakeStoreAccountManagementClient(armCreds);
adlsAccountClient.SubscriptionId = subid;

var adlaCatalogClient = new DataLakeAnalyticsCatalogManagementClient(adlCreds);
var adlaJobClient = new DataLakeAnalyticsJobManagementClient(adlCreds);

var adlsFileSystemClient = new DataLakeStoreFileSystemManagementClient(adlCreds);

var  graphClient = new GraphRbacManagementClient(graphCreds);
graphClient.TenantID = domain;

계정 관리Manage accounts

Azure 리소스 그룹 만들기Create an Azure Resource Group

아직 만들지 않은 경우에는 반드시 Azure 리소스 그룹을 만들어 Data Lake Analytics 구성 요소를 만들어야 합니다.If you haven't already created one, you must have an Azure Resource Group to create your Data Lake Analytics components. 인증 자격 증명, 구독 ID 및 위치가 필요합니다.You need your authentication credentials, subscription ID, and a location. 다음 코드는 리소스 그룹을 만드는 방법을 보여 줍니다.The following code shows how to create a resource group:

var resourceGroup = new ResourceGroup { Location = location };
resourceManagementClient.ResourceGroups.CreateOrUpdate(groupName, rg);

자세한 내용은 Azure 리소스 그룹 및 Data Lake Analytics를 참조하세요.For more information, see Azure Resource Groups and Data Lake Analytics.

Data Lake 저장소 계정 만들기Create a Data Lake Store account

항상 ADLA 계정에는 ADLS 계정이 필요합니다.Ever ADLA account requires an ADLS account. 아직 사용할 ADLS 계정이 없는 경우 다음 코드를 사용하여 만들 수 있습니다.If you don't already have one to use, you can create one with the following code:

var new_adls_params = new DataLakeStoreAccount(location: _location);
adlsAccountClient.Account.Create(rg, adls, new_adls_params);

Data Lake 분석 계정 만들기Create a Data Lake Analytics account

다음 코드는 ADLS 계정을 만듭니다.The following code creates an ADLS account

var new_adla_params = new DataLakeAnalyticsAccount()
{
   DefaultDataLakeStoreAccount = adls,
   Location = location
};

adlaClient.Account.Create(rg, adla, new_adla_params);

Data Lake Store 계정 나열List Data Lake Store accounts

var adlsAccounts = adlsAccountClient.Account.List().ToList();
foreach (var adls in adlsAccounts)
{
   Console.WriteLine($"ADLS: {0}", adls.Name);
}

데이터 레이크 분석 계정을 나열합니다.List Data Lake Analytics accounts

var adlaAccounts = adlaClient.Account.List().ToList();

for (var adla in AdlaAccounts)
{
   Console.WriteLine($"ADLA: {0}, adla.Name");
}

계정이 있는지 확인Checking if an account exists

bool exists = adlaClient.Account.Exists(rg, adla));

계정에 대한 정보 가져오기Get information about an account

bool exists = adlaClient.Account.Exists(rg, adla));
if (exists)
{
   var adla_accnt = adlaClient.Account.Get(rg, adla);
}

계정 삭제Delete an account

if (adlaClient.Account.Exists(rg, adla))
{
   adlaClient.Account.Delete(rg, adla);
}

기본 Data Lake Store 계정 가져오기Get the default Data Lake Store account

모든 Data Lake Analytics 계정에는 기본 Data Lake Store 계정이 필요합니다.Every Data Lake Analytics account requires a default Data Lake Store account. 다음 코드를 사용하여 Analytics 계정의 기본 Store 계정을 결정합니다.Use this code to determine the default Store account for an Analytics account.

if (adlaClient.Account.Exists(rg, adla))
{
  var adla_accnt = adlaClient.Account.Get(rg, adla);
  string def_adls_account = adla_accnt.DefaultDataLakeStoreAccount;
}

데이터 원본 관리Manage data sources

데이터 레이크 분석은 현재 다음 데이터 원본을 지원합니다.Data Lake Analytics currently supports the following data sources:

Azure Storage 계정에 대한 링크를 만들 수 있습니다.You can create links to Azure Storage accounts.

string storage_key = "xxxxxxxxxxxxxxxxxxxx";
string storage_account = "mystorageaccount";
var addParams = new AddStorageAccountParameters(storage_key);            
adlaClient.StorageAccounts.Add(rg, adla, storage_account, addParams);

Azure Storage 데이터 원본 나열List Azure Storage data sources

var stg_accounts = adlaAccountClient.StorageAccounts.ListByAccount(rg, adla);

if (stg_accounts != null)
{
  foreach (var stg_account in stg_accounts)
  {
      Console.WriteLine($"Storage account: {0}", stg_account.Name);
  }
}

Data Lake Store 데이터 원본 나열List Data Lake Store data sources

var adls_accounts = adlsClient.Account.List();

if (adls_accounts != null)
{
  foreach (var adls_accnt in adls_accounts)
  {
      Console.WriteLine($"ADLS account: {0}", adls_accnt.Name);
  }
}

폴더 및 파일 업로드 및 다운로드Upload and download folders and files

Data Lake Store 파일 시스템 클라이언트 관리 개체를 사용하여 다음 메서드를 통해 Azure에서 로컬 컴퓨터로 개별 파일 또는 폴더를 업로드하고 다운로드할 수 있습니다.You can use the Data Lake Store file system client management object to upload and download individual files or folders from Azure to your local computer, using the following methods:

  • UploadFolderUploadFolder
  • UploadFileUploadFile
  • DownloadFolderDownloadFolder
  • DownloadFileDownloadFile

이러한 메서드의 첫 번째 매개 변수는 원본 경로 및 대상 경로 매개 변수가 뒤에 나오는 Data Lake Store 계정 이름입니다.The first parameter for these methods is the name of the Data Lake Store Account, followed by parameters for the source path and the destination path.

다음 예제는 Data Lake Store에서 폴더를 다운로드하는 방법을 보여 줍니다.The following example shows how to download a folder in the Data Lake Store.

adlsFileSystemClient.FileSystem.DownloadFolder(adls, sourcePath, destinationPath);

Data Lake Store 계정에 파일 만들기Create a file in a Data Lake Store account

using (var memstream = new MemoryStream())
{
   using (var sw = new StreamWriter(memstream, UTF8Encoding.UTF8))
   {
      sw.WriteLine("Hello World");
      sw.Flush();
      
      memstream.Position = 0;

      adlsFileSystemClient.FileSystem.Create(adls, "/Samples/Output/randombytes.csv", memstream);
   }
}

Azure Storage 계정 경로 확인Verify Azure Storage account paths

다음 코드에서는 Azure Storage 계정(storageAccntName)이 Data Lake Analytics 계정(analyticsAccountName)에 있는지 및 컨테이너(containerName)가 Azure Storage 계정에 있는지를 확인합니다.The following code checks if an Azure Storage account (storageAccntName) exists in a Data Lake Analytics account (analyticsAccountName), and if a container (containerName) exists in the Azure Storage account.

string storage_account = "mystorageaccount";
string storage_container = "mycontainer";
bool accountExists = adlaClient.Account.StorageAccountExists(rg, adla, storage_account));
bool containerExists = adlaClient.Account.StorageContainerExists(rg, adla, storage_account, storage_container));

카탈로그 및 작업 관리Manage catalog and jobs

DataLakeAnalyticsCatalogManagementClient 개체는 각 Azure Data Lake Analytics 계정에 제공된 SQL 데이터베이스를 관리하는 메서드를 제공합니다.The DataLakeAnalyticsCatalogManagementClient object provides methods for managing the SQL database provided for each Azure Data Lake Analytics account. DataLakeAnalyticsJobManagementClient는 U-SQL 스크립트를 사용하여 데이터베이스에서 실행되는 작업을 제출하고 관리하는 메서드를 제공합니다.The DataLakeAnalyticsJobManagementClient provides methods to submit and manage jobs run on the database with U-SQL scripts.

데이터베이스 및 스키마 나열List databases and schemas

나열할 수 있는 항목들 중에서 가장 일반적인 항목이 데이터베이스와 해당 스키마입니다.Among the several things you can list, the most common are databases and their schema. 다음 코드에서는 데이터베이스 컬렉션을 가져온 다음 각 데이터베이스에 대한 스키마를 열거합니다.The following code obtains a collection of databases, and then enumerates the schema for each database.

var databases = adlaCatalogClient.Catalog.ListDatabases(adla);
foreach (var db in databases)
{
  Console.WriteLine($"Database: {db.Name}");
  Console.WriteLine(" - Schemas:");
  var schemas = adlaCatalogClient.Catalog.ListSchemas(adla, db.Name);
  foreach (var schm in schemas)
  {
      Console.WriteLine($"\t{schm.Name}");
  }
}

테이블 열 나열List table columns

다음 코드에서는 Data Lake Analytics 카탈로그 관리 클라이언트를 통해 데이터베이스에 액세스하여 지정한 테이블의 열을 나열하는 방법을 보여 줍니다.The following code shows how to access the database with a Data Lake Analytics Catalog management client to list the columns in a specified table.

var tbl = adlaCatalogClient.Catalog.GetTable(adla, "master", "dbo", "MyTableName");
IEnumerable<USqlTableColumn> columns = tbl.ColumnList;

foreach (USqlTableColumn utc in columns)
{
  Console.WriteLine($"\t{utc.Name}");
}

U-SQL 작업 제출Submit a U-SQL job

다음 코드에서는 Data Lake Analytics 작업 관리 클라이언트를 사용하여 작업을 제출하는 방법을 보여줍니다.The following code shows how to use a Data Lake Analytics Job management client to submit a job.

string scriptPath = "/Samples/Scripts/SearchResults_Wikipedia_Script.txt";
Stream scriptStrm = adlsFileSystemClient.FileSystem.Open(_adlsAccountName, scriptPath);
string scriptTxt = string.Empty;
using (StreamReader sr = new StreamReader(scriptStrm))
{
    scriptTxt = sr.ReadToEnd();
}

var jobName = "SR_Wikipedia";
var jobId = Guid.NewGuid();
var properties = new USqlJobProperties(scriptTxt);
var parameters = new JobInformation(jobName, JobType.USql, properties, priority: 1, degreeOfParallelism: 1, jobId: jobId);
var jobInfo = adlaJobClient.Job.Create(adla, jobId, parameters);
Console.WriteLine($"Job {jobName} submitted.");

실패한 작업 나열List failed jobs

다음 코드에서는 실패한 작업에 대한 정보를 나열합니다.The following code lists information about jobs that failed.

var odq = new ODataQuery<JobInformation> { Filter = "result eq 'Failed'" };
var jobs = adlaJobClient.Job.List(adla, odq);
foreach (var j in jobs)
{
   Console.WriteLine($"{j.Name}\t{j.JobId}\t{j.Type}\t{j.StartTime}\t{j.EndTime}");
}

파이프라인 나열List pipelines

다음 코드는 계정에 제출된 작업의 각 파이프라인에 대한 정보를 나열합니다.The following code lists information about each pipeline of jobs submitted to the account.

var pipelines = adlaJobClient.Pipeline.List(adla);
foreach (var p in pipelines)
{
   Console.WriteLine($"Pipeline: {p.Name}\t{p.PipelineId}\t{p.LastSubmitTime}");
}

되풀이 나열List recurrences

다음 코드는 계정에 제출된 작업의 각 되풀이에 대한 정보를 나열합니다.The following code lists information about each recurrence of jobs submitted to the account.

var recurrences = adlaJobClient.Recurrence.List(adla);
foreach (var r in recurrences)
{
   Console.WriteLine($"Recurrence: {r.Name}\t{r.RecurrenceId}\t{r.LastSubmitTime}");
}

일반적인 그래프 시나리오Common graph scenarios

AAD 디렉터리에서 사용자 조회Look up user in the AAD directory

var userinfo = graphClient.Users.Get( "bill@contoso.com" );

AAD 디렉터리에서 사용자의 ObjectId 가져오기Get the ObjectId of a user in the AAD directory

var userinfo = graphClient.Users.Get( "bill@contoso.com" );
Console.WriteLine( userinfo.ObjectId )

컴퓨팅 정책 관리Manage compute policies

DataLakeAnalyticsAccountManagementClient 개체는 Data Lake Analytics 계정에 대한 컴퓨팅 정책을 관리하는 메서드를 제공합니다.The DataLakeAnalyticsAccountManagementClient object provides methods for managing the compute policies for a Data Lake Analytics account.

컴퓨팅 정책 나열List compute policies

다음 코드는 Data Lake Analytics 계정에 대한 컴퓨팅 정책 목록을 검색합니다.The following code retrieves a list of compute policies for a Data Lake Analytics account.

var policies = adlaAccountClient.ComputePolicies.ListByAccount(rg, adla);
foreach (var p in policies)
{
   Console.WriteLine($"Name: {p.Name}\tType: {p.ObjectType}\tMax AUs / job: {p.MaxDegreeOfParallelismPerJob}\tMin priority / job: {p.MinPriorityPerJob}");
}

새 컴퓨팅 정책 만들기Create a new compute policy

다음 코드는 지정된 사용자가 사용할 수 있는 최대 AU를 50으로, 최소 작업 우선 순위를 250으로 설정하는, Data Lake Analytics 계정에 대한 새 컴퓨팅 정책을 만듭니다.The following code creates a new compute policy for a Data Lake Analytics account, setting the maximum AUs available to the specified user to 50, and the minimum job priority to 250.

var userAadObjectId = "3b097601-4912-4d41-b9d2-78672fc2acde";
var newPolicyParams = new ComputePolicyCreateOrUpdateParameters(userAadObjectId, "User", 50, 250);
adlaAccountClient.ComputePolicies.CreateOrUpdate(rg, adla, "GaryMcDaniel", newPolicyParams);

다음 단계Next steps