Dateisystemvorgänge in Azure Data Lake Storage Gen1 mit der REST-API
In diesem Artikel erfahren Sie, wie Sie mit WebHDFS-REST-APIs und Data Lake Storage Gen1-REST-APIs Dateisystemvorgänge in Azure Data Lake Storage Gen1 durchführen. Eine Anleitung zum Durchführen von Kontoverwaltungsvorgängen in Data Lake Storage Gen1 mit der REST-API finden Sie unter Kontoverwaltungsvorgänge für Data Lake Storage Gen1 mit der REST-API.
Voraussetzungen
Ein Azure-Abonnement. Siehe Kostenlose Azure-Testversion.
Ein Azure Data Lake Storage Gen1-Konto. Befolgen Sie die Anweisungen unter Erste Schritte mit Azure Data Lake Storage Gen1 über das Azure-Portal.
cURL . Dieser Artikel zeigt anhand von cURL, wie Sie REST-API-Aufrufe eines Data Lake Storage Gen1-Kontos ausführen.
Gewusst wie sich mit Microsoft Entra ID authentifizieren?
Sie können zwei Ansätze für die Authentifizierung mit Microsoft Entra ID verwenden.
- Informationen zur Authentifizierung von Endbenutzern für Ihre Anwendung (interaktiv) 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 (nicht interaktiv) finden Sie unter Dienst-zu-Dienst-Authentifizierung mit Data Lake Storage Gen1 über das .NET SDK.
Erstellen Sie die Ordner.
Dieser Vorgang basiert auf dem hierdefinierten WebHDFS-REST-API-Aufruf.
Verwenden Sie den folgenden cURL-Befehl. Ersetzen Sie <yourstorename> durch Ihren Data Lake Storage Gen1-Kontonamen.
curl -i -X PUT -H "Authorization: Bearer <REDACTED>" -d "" 'https://<yourstorename>.azuredatalakestore.net/webhdfs/v1/mytempdir/?op=MKDIRS'
Ersetzen Sie im vorherigen Befehl <REDACTED
> durch das Autorisierungstoken, das Sie zuvor abgerufen haben. Dieser Befehl erstellt das Verzeichnis mytempdir im Stammordner Ihres Data Lake Storage Gen1-Kontos.
Wenn der Vorgang erfolgreich abgeschlossen wurde, sollte eine Antwort wie im folgenden Codeausschnitt angezeigt werden:
{"boolean":true}
Auflisten von Ordnern
Dieser Vorgang basiert auf dem hierdefinierten WebHDFS-REST-API-Aufruf.
Verwenden Sie den folgenden cURL-Befehl. Ersetzen Sie <yourstorename> durch Ihren Data Lake Storage Gen1-Kontonamen.
curl -i -X GET -H "Authorization: Bearer <REDACTED>" 'https://<yourstorename>.azuredatalakestore.net/webhdfs/v1/?op=LISTSTATUS'
Ersetzen Sie im vorherigen Befehl <REDACTED
> durch das Autorisierungstoken, das Sie zuvor abgerufen haben.
Wenn der Vorgang erfolgreich abgeschlossen wurde, sollte eine Antwort wie im folgenden Codeausschnitt angezeigt werden:
{
"FileStatuses": {
"FileStatus": [{
"length": 0,
"pathSuffix": "mytempdir",
"type": "DIRECTORY",
"blockSize": 268435456,
"accessTime": 1458324719512,
"modificationTime": 1458324719512,
"replication": 0,
"permission": "777",
"owner": "<GUID>",
"group": "<GUID>"
}]
}
}
Hochladen von Daten
Dieser Vorgang basiert auf dem hierdefinierten WebHDFS-REST-API-Aufruf.
Verwenden Sie den folgenden cURL-Befehl. Ersetzen Sie <yourstorename> durch Ihren Data Lake Storage Gen1-Kontonamen.
curl -i -X PUT -L -T 'C:\temp\list.txt' -H "Authorization: Bearer <REDACTED>" 'https://<yourstorename>.azuredatalakestore.net/webhdfs/v1/mytempdir/list.txt?op=CREATE'
In der vorherigen Syntax wird mit dem Parameter -T der Speicherort der hochgeladenen Datei angegeben.
Die Ausgabe sieht in etwa wie im folgenden Codeausschnitt aus:
HTTP/1.1 307 Temporary Redirect
...
Location: https://<yourstorename>.azuredatalakestore.net/webhdfs/v1/mytempdir/list.txt?op=CREATE&write=true
...
Content-Length: 0
HTTP/1.1 100 Continue
HTTP/1.1 201 Created
...
Lesen von Daten
Dieser Vorgang basiert auf dem hierdefinierten WebHDFS-REST-API-Aufruf.
Das Lesen von Daten aus einem Data Lake Storage Gen1-Konto ist ein zweistufiger Prozess.
- Sie müssen zuerst eine GET-Anforderung an den Endpunkt
https://<yourstorename>.azuredatalakestore.net/webhdfs/v1/mytempdir/myinputfile.txt?op=OPEN
senden. Mit diesem Aufruf wird ein Speicherort zurückgegeben, an den die nächste GET-Anforderung gesendet werden soll. - Dann senden Sie die GET-Anforderung an den Endpunkt
https://<yourstorename>.azuredatalakestore.net/webhdfs/v1/mytempdir/myinputfile.txt?op=OPEN&read=true
. Mit diesem Aufruf wird der Inhalt der Datei angezeigt.
Da es in den Eingabeparametern keinen Unterschied zwischen dem ersten und zweiten Schritt gibt, können Sie mit dem -L
-Parameter die erste Anforderung senden. Mit -L
werden im Wesentlichen zwei Anforderungen in einer kombiniert, und es wird erreicht, dass cURL die Anforderung am neuen Speicherort noch einmal ausführt. Schließlich wird die Ausgabe aller Anforderungsaufrufe wie im folgenden Codeausschnitt dargestellt angezeigt. Ersetzen Sie <yourstorename> durch Ihren Data Lake Storage Gen1-Kontonamen.
curl -i -L GET -H "Authorization: Bearer <REDACTED>" 'https://<yourstorename>.azuredatalakestore.net/webhdfs/v1/mytempdir/myinputfile.txt?op=OPEN'
Die Ausgabe sollte in etwa wie folgender Codeausschnitt aussehen:
HTTP/1.1 307 Temporary Redirect
...
Location: https://<yourstorename>.azuredatalakestore.net/webhdfs/v1/mytempdir/somerandomfile.txt?op=OPEN&read=true
...
HTTP/1.1 200 OK
...
Hello, Data Lake Store user!
Umbenennen einer Datei
Dieser Vorgang basiert auf dem hierdefinierten WebHDFS-REST-API-Aufruf.
Verwenden Sie zum Umbenennen einer Datei den folgenden cURL-Befehl. Ersetzen Sie <yourstorename> durch Ihren Data Lake Storage Gen1-Kontonamen.
curl -i -X PUT -H "Authorization: Bearer <REDACTED>" -d "" 'https://<yourstorename>.azuredatalakestore.net/webhdfs/v1/mytempdir/myinputfile.txt?op=RENAME&destination=/mytempdir/myinputfile1.txt'
Die Ausgabe sollte in etwa wie folgender Codeausschnitt aussehen:
HTTP/1.1 200 OK
...
{"boolean":true}
Löschen von Dateien
Dieser Vorgang basiert auf dem hierdefinierten WebHDFS-REST-API-Aufruf.
Verwenden Sie zum Löschen einer Datei den folgenden cURL-Befehl. Ersetzen Sie <yourstorename> durch Ihren Data Lake Storage Gen1-Kontonamen.
curl -i -X DELETE -H "Authorization: Bearer <REDACTED>" 'https://<yourstorename>.azuredatalakestore.net/webhdfs/v1/mytempdir/myinputfile1.txt?op=DELETE'
Folgendes sollte angezeigt werden:
HTTP/1.1 200 OK
...
{"boolean":true}