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 Studio 2015、Visual Studio 2013 Update 4、または Visual Studio 2012 (Visual C++ インストール済み)Visual Studio 2015, Visual Studio 2013 update 4, or Visual Studio 2012 with Visual C++ Installed.
  • Microsoft Azure SDK for .NET バージョン 2.5 以上Microsoft Azure SDK for .NET version 2.5 or above. Web Platform Installer を使用してインストールしますInstall it using the Web platform installer.
  • 必要な NuGet パッケージRequired NuGet Packages

NuGet パッケージのインストールInstall NuGet packages

PackagePackage バージョン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)

AuthenticationAuthentication

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 の認証オプションに関する記事をご覧ください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 Store アカウントを作成するCreate a Data Lake Store account

ADLA アカウントには ADLS アカウントが必要です。Ever ADLA account requires an ADLS account. 使うものがまだない場合は、次のコードで作成できます。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 Analytics アカウントを作成する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);
}

Data Lake Analytics アカウントを一覧表示します。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 では現在、以下のデータ ソースがサポートされています。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 ストレージ アカウント パスを確認するVerify Azure Storage account paths

次のコードは、Data Lake Analytics アカウント (analyticsAccountName) 内に Azure ストレージ アカウント (storageAccntName) が存在するかどうかと、その Azure ストレージ アカウント内にコンテナー (containerName) が存在するかどうかを確認します。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 Database を管理するための方法を提供します。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

次のコードは、Data Lake Analytics アカウントの新しいコンピューティング ポリシーを作成し、指定したユーザーが使用できる最大 AU を 50 に、最小ジョブ優先順位を 250 に設定します。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