次の方法で共有


.NET SDK を使用した Data Lake Storage Gen1 に対するファイルシステム操作

この記事では、.NET SDK を使用して Data Lake Storage Gen1 に対してファイルシステム操作を実行する方法について説明します。 ファイルシステムの操作には、Data Lake Storage Gen1 アカウントでのフォルダーの作成、ファイルのアップロード、ファイルのダウンロードなどがあります。

.NET SDK を使用して Data Lake Storage Gen1 に対してアカウント管理操作を実行する方法については、 .NET SDK を使用した Data Lake Storage Gen1 に対するアカウント管理操作に関する記事を参照してください。

前提条件

  • Visual Studio 2013 以降。 この記事の手順では、Visual Studio 2019 を使用します。

  • Azure サブスクリプションAzure 無料試用版の取得に関するページを参照してください。

  • Azure Data Lake Storage Gen1 アカウント。 アカウントを作成する方法については、「 Azure Data Lake Storage Gen1 の概要」を参照してください。

.NET アプリケーションの作成

GitHub で入手できるコード サンプルでは、ストア内のファイルの作成、ファイルの連結、ファイルのダウンロード、ストア内の一部のファイルの削除のプロセスについて紹介します。 この記事のこのセクションでは、コードの主要な部分について説明します。

  1. Visual Studio で、[ファイル] メニュー、[新規作成][プロジェクト] の順に選択します。

  2. [コンソール アプリ (.NET Framework)] を選択し、[次へ] を選択します。

  3. [プロジェクト名]CreateADLApplication と入力して、[作成] を選択します。

  4. NuGet パッケージをプロジェクトに追加します。

    1. ソリューション エクスプローラーでプロジェクト名を右クリックし、 [NuGet パッケージの管理]をクリックします。

    2. [ NuGet パッケージ マネージャー ] タブで、 パッケージ ソースnuget.org に設定されていることを確認します。また、[ プレリリースを含める ] チェック ボックスがオンになっていることを確認します。

    3. 以下の NuGet パッケージを検索してインストールします。

      • Microsoft.Azure.DataLake.Store - この記事では v1.0.0 を使用します。
      • Microsoft.Rest.ClientRuntime.Azure.Authentication - この記事では v2.3.1 を使用します。

      NuGet パッケージ マネージャーを閉じます。

  5. Program.csを開き、既存のコードを削除し、次のステートメントに置き換えて、名前空間の参照を追加します。

    using System;
    using System.IO;using System.Threading;
    using System.Linq;
    using System.Text;
    using System.Collections.Generic;
    using System.Security.Cryptography.X509Certificates; // Required only if you're using an Azure AD application created with certificates
    
    using Microsoft.Rest;
    using Microsoft.Rest.Azure.Authentication;
    using Microsoft.Azure.DataLake.Store;
    using Microsoft.IdentityModel.Clients.ActiveDirectory;
    
  6. 次に示すように変数を宣言し、プレースホルダーの値を指定します。 また、ここで指定するローカル パスとファイル名がコンピューターに存在することを確認します。

    namespace SdkSample
    {
        class Program
        {
            private static string _adlsg1AccountName = "<DATA-LAKE-STORAGE-GEN1-NAME>.azuredatalakestore.net";
        }
    }
    

この記事の残りのセクションでは、使用可能な .NET メソッドを使用して、認証、ファイルのアップロードなどの操作を行う方法を確認できます。

認証

クライアント オブジェクトを作成する

次のスニペットでは、Data Lake Storage Gen1 ファイルシステム クライアント オブジェクトを作成します。これは、サービスに要求を発行するために使用されます。

// Create client objects
AdlsClient client = AdlsClient.CreateClient(_adlsg1AccountName, adlCreds);

ファイルとディレクトリを作成する

次のスニペットをアプリケーションに追加します。 このスニペットは、ファイルと、存在しない親ディレクトリを追加します。

// Create a file - automatically creates any parent directories that don't exist
// The AdlsOutputStream preserves record boundaries - it does not break records while writing to the store

using (var stream = client.CreateFile(fileName, IfExists.Overwrite))
{
    byte[] textByteArray = Encoding.UTF8.GetBytes("This is test data to write.\r\n");
    stream.Write(textByteArray, 0, textByteArray.Length);

    textByteArray = Encoding.UTF8.GetBytes("This is the second line.\r\n");
    stream.Write(textByteArray, 0, textByteArray.Length);
}

ファイルに追加する

次のスニペットは、Data Lake Storage Gen1 アカウントの既存のファイルにデータを追加します。

// Append to existing file

using (var stream = client.GetAppendStream(fileName))
{
    byte[] textByteArray = Encoding.UTF8.GetBytes("This is the added line.\r\n");
    stream.Write(textByteArray, 0, textByteArray.Length);
}

ファイルの読み取り

次のスニペットは、Data Lake Storage Gen1 のファイルの内容を読み取ります。

//Read file contents

using (var readStream = new StreamReader(client.GetReadStream(fileName)))
{
    string line;
    while ((line = readStream.ReadLine()) != null)
    {
        Console.WriteLine(line);
    }
}

ファイルのプロパティを取得する

次のスニペットは、ファイルまたはディレクトリに関連付けられているプロパティを返します。

// Get file properties
var directoryEntry = client.GetDirectoryEntry(fileName);
PrintDirectoryEntry(directoryEntry);

PrintDirectoryEntry メソッドの定義は、GitHub のサンプルの一部として入手できます。

ファイルの名前を変更する

次のスニペットは、Data Lake Storage Gen1 アカウント内の既存のファイルの名前を変更します。

// Rename a file
string destFilePath = "/Test/testRenameDest3.txt";
client.Rename(fileName, destFilePath, true);

ディレクトリを列挙する

次のスニペットは、Data Lake Storage Gen1 アカウント内のディレクトリを列挙します。

// Enumerate directory
foreach (var entry in client.EnumerateDirectory("/Test"))
{
    PrintDirectoryEntry(entry);
}

PrintDirectoryEntry メソッドの定義は、GitHub のサンプルの一部として入手できます。

ディレクトリを再帰的に削除する

次のスニペットは、ディレクトリとそのすべてのサブディレクトリを再帰的に削除します。

// Delete a directory and all its subdirectories and files
client.DeleteRecursive("/Test");

サンプル

Data Lake Storage Gen1 Filesystem SDK の使用方法を示すサンプルをいくつか次に示します。

こちらもご覧ください

次のステップ