Dateisystemvorgänge in Data Lake Storage Gen1 mit dem .NET SDK
In diesem Artikel erfahren Sie, wie Sie Dateisystemvorgänge in Data Lake Storage Gen1 mithilfe des .NET SDK durchführen. Zu den Dateisystemvorgängen gehören das Erstellen von Ordnern in einem Data Lake Storage Gen1-Konto, das Hochladen von Dateien, das Herunterladen von Dateien usw.
Eine Anleitung zum Durchführen von Kontoverwaltungsvorgängen in Data Lake Storage Gen1 mit dem .NET SDK finden Sie unter Erste Schritte mit Data Lake Storage Gen1 mit dem .NET SDK.
Voraussetzungen
Visual Studio 2013 und höher. Für die Anleitungen in diesem Artikel wird Visual Studio 2019 verwendet.
Ein Azure-Abonnement. Siehe Kostenlose Azure-Testversion.
Ein Azure Data Lake Storage Gen1-Konto. Anweisungen zum Erstellen eines Kontos finden Sie unter Erste Schritte mit Azure Data Lake Storage Gen1
Erstellen einer .NET-Anwendung
Das auf GitHub verfügbare Codebeispiel veranschaulicht Schritt für Schritt den Prozess zum Erstellen der Dateien im Speicher, zum Verketten von Dateien, zum Herunterladen einer Datei und zum Löschen einiger Dateien aus dem Speicher. In diesem Abschnitt des Artikels werden die wichtigsten Teile des Codes beschrieben.
Wählen Sie in Visual Studio das Menü Datei, dann die Option Neu und anschließend Projekt aus.
Wählen Sie Konsolen-App (.NET Framework) und dann Weiter aus.
Geben Sie unter Projektname
CreateADLApplication
ein, und wählen Sie dann Erstellen aus.Fügen Sie Ihrem Projekt die NuGet-Pakete hinzu.
Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf den Projektnamen und dann auf NuGet-Pakete verwalten.
Stellen Sie auf der Registerkarte NuGet-Paket-Manager sicher, dass Paketquelle auf nuget.org festgelegt ist. Stellen Sie außerdem sicher, dass das Kontrollkästchen Vorabversion einbeziehen aktiviert ist.
Suchen und installieren Sie die folgenden NuGet-Pakete:
-
Microsoft.Azure.DataLake.Store
: In diesem Artikel wird v1.0.0 verwendet. -
Microsoft.Rest.ClientRuntime.Azure.Authentication
: In diesem Artikel wird v2.3.1 verwendet.
Schließen Sie den NuGet-Paket-Manager.
-
Öffnen Sie Program.cs, löschen Sie den vorhandenen Code, und fügen Sie dann die folgenden Anweisungen ein, um Verweise auf Namespaces hinzuzufügen.
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;
Deklarieren Sie die Variablen wie unten dargestellt, und geben Sie die Werte für die Platzhalter an. Stellen Sie außerdem sicher, dass der hier angegebene lokale Pfad und der Dateiname auf dem Computer vorhanden sind.
namespace SdkSample { class Program { private static string _adlsg1AccountName = "<DATA-LAKE-STORAGE-GEN1-NAME>.azuredatalakestore.net"; } }
In den restlichen Abschnitten dieses Artikels erfahren Sie, wie Sie die verfügbaren .NET-Methoden verwenden, um Vorgänge wie Authentifizierung, Dateiupload usw. durchzuführen.
Authentifizierung
- Informationen zur Authentifizierung von Endbenutzern für Ihre Anwendung finden Sie unter Authentifizierung von Endbenutzern mit Data Lake Storage Gen1 über das .NET SDK.
- Informationen zur Dienst-zu-Dienst-Authentifizierung für Ihre Anwendung finden Sie unter Dienst-zu-Dienst-Authentifizierung mit Data Lake Storage Gen1 über das .NET SDK.
Erstellen des Clientobjekts
Mit dem folgenden Codeausschnitt wird das Data Lake Storage Gen1-Dateisystem-Clientobjekt erstellt, das zum Ausführen von Anforderungen für den Dienst genutzt wird.
// Create client objects
AdlsClient client = AdlsClient.CreateClient(_adlsg1AccountName, adlCreds);
Erstellen einer Datei und eines Verzeichnisses
Fügen Sie Ihrer Anwendung den unten angegebenen Codeausschnitt hinzu. Mit diesem Codeausschnitt werden eine Datei und ggf. nicht vorhandene übergeordnete Verzeichnisse hinzugefügt.
// 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);
}
Anfügen an eine Datei
Mit dem folgenden Codeausschnitt werden Daten an eine vorhandene Datei im Data Lake Storage Gen1-Konto angefügt.
// 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);
}
Lesen einer Datei
Mit dem folgenden Codeausschnitt wird der Inhalt einer Datei in Data Lake Storage Gen1 gelesen.
//Read file contents
using (var readStream = new StreamReader(client.GetReadStream(fileName)))
{
string line;
while ((line = readStream.ReadLine()) != null)
{
Console.WriteLine(line);
}
}
Abrufen von Dateieigenschaften
Mit dem folgenden Codeausschnitt werden die Eigenschaften zurückgegeben, die einer Datei oder einem Verzeichnis zugeordnet sind:
// Get file properties
var directoryEntry = client.GetDirectoryEntry(fileName);
PrintDirectoryEntry(directoryEntry);
Die Definition der PrintDirectoryEntry
-Methode ist als Teil des Beispiels auf GitHub verfügbar.
Umbenennen einer Datei
Mit dem folgenden Codeausschnitt wird eine vorhandene Datei im Data Lake Storage Gen1-Konto umbenannt.
// Rename a file
string destFilePath = "/Test/testRenameDest3.txt";
client.Rename(fileName, destFilePath, true);
Aufzählen eines Verzeichnisses
Mit dem folgenden Codeausschnitt werden Verzeichnisse in einem Data Lake Storage Gen1-Konto aufgezählt.
// Enumerate directory
foreach (var entry in client.EnumerateDirectory("/Test"))
{
PrintDirectoryEntry(entry);
}
Die Definition der PrintDirectoryEntry
-Methode ist als Teil des Beispiels auf GitHub verfügbar.
Rekursives Löschen von Verzeichnissen
Mit dem folgenden Codeausschnitt werden ein Verzeichnis und alle Unterverzeichnisse rekursiv gelöscht.
// Delete a directory and all its subdirectories and files
client.DeleteRecursive("/Test");
Beispiele
Im Folgenden finden Sie zwei Beispiele für die Nutzung des Data Lake Storage Gen1-Dateisystem-SDK.
Weitere Informationen
- Kontoverwaltungsvorgänge für Data Lake Storage Gen1 mit dem .NET SDK
- .NET SDK-Referenz zu Data Lake Storage Gen1