Címtárak és fájlok kezelése a Java használatával az Azure Data Lake Storage Gen2-ben
Ez a cikk bemutatja, hogyan hozhat létre és kezelhet címtárakat és fájlokat a Java használatával hierarchikus névtérrel rendelkező tárfiókokban.
A címtárak és fájlok hozzáférés-vezérlési listáinak (ACL) beszerzéséről, beállításáról és frissítéséről a Használat című témakörben olvashat . Java az ACL-ek kezeléséhez az Azure Data Lake Storage Gen2-ben.
Package (Maven) | Samples | API reference | Gen1 to Gen2 mapping | Give Feedback
Előfeltételek
Azure-előfizetés. További információ: Ingyenes Azure-próbaidőszak lekérése.
Olyan tárfiók, amely engedélyezve van a hierarchikus névtérrel. Az alábbi utasításokat követve hozzon létre egyet.
A projekt beállítása
Első lépésként nyissa meg ezt a lapot , és keresse meg a Java-kódtár legújabb verzióját. Ezután nyissa meg a pom.xml fájlt a szövegszerkesztőben. Adjon hozzá egy függőségi elemet, amely az adott verzióra hivatkozik.
Ha microsoft Entra-azonosítóval szeretné hitelesíteni az ügyfélalkalmazást, adjon hozzá egy függőséget az Azure Identity-kódtárhoz. További információkért tekintse meg a Java Azure Identity ügyfélkódtárát.
Ezután adja hozzá ezeket az importálási utasításokat a kódfájlhoz.
import com.azure.identity.*;
import com.azure.storage.common.StorageSharedKeyCredential;
import com.azure.core.http.rest.PagedIterable;
import com.azure.core.util.BinaryData;
import com.azure.storage.file.datalake.*;
import com.azure.storage.file.datalake.models.*;
import com.azure.storage.file.datalake.options.*;
Feljegyzés
A Data Lake Storage többprotokollos hozzáférése lehetővé teszi az alkalmazások számára, hogy a Blob API-kat és a Data Lake Storage Gen2 API-kat is használják a hierarchikus névtérrel (HNS) rendelkező tárfiókokban lévő adatok kezeléséhez. A Data Lake Storage Gen2-ben egyedülálló képességek, például a címtárműveletek és az ACL-ek használatakor használja a Data Lake Storage Gen2 API-kat, ahogyan az ebben a cikkben látható.
Az adott forgatókönyvben használni kívánt API-k kiválasztásakor vegye figyelembe az alkalmazás számítási feladatait és igényeit, valamint a HNS ismert problémáit és a számítási feladatokra és alkalmazásokra gyakorolt hatását.
Hozzáférés engedélyezése és csatlakozás az adaterőforrásokhoz
A cikkben szereplő példakódok használatához létre kell hoznia egy hitelesített DataLakeServiceClient-példányt , amely a tárfiókot jelöli. Az objektumokat DataLakeServiceClient
a Microsoft Entra-azonosító, a fiókhozzáférés kulcsa vagy a közös hozzáférésű jogosultságkód (SAS) használatával engedélyezheti.
Az Azure Identity Java-ügyfélkódtárával hitelesítheti az alkalmazást a Microsoft Entra-azonosítóval.
Hozzon létre egy DataLakeServiceClient-példányt , és adja át a DefaultAzureCredential osztály új példányát.
static public DataLakeServiceClient GetDataLakeServiceClient(String accountName){
DefaultAzureCredential defaultCredential = new DefaultAzureCredentialBuilder().build();
DataLakeServiceClient dataLakeServiceClient = new DataLakeServiceClientBuilder()
.endpoint("https://" + accountName + ".dfs.core.windows.net")
.credential(defaultCredential)
.buildClient();
return dataLakeServiceClient;
}
Ha többet szeretne megtudni az adatokhoz való hozzáférés engedélyezéséről DefaultAzureCredential
, tekintse meg a Java-hoz készült Azure Identity ügyfélkódtárat.
Tároló létrehozása
A tároló fájlrendszerként működik a fájlokhoz. Tárolót a következő módszerrel hozhat létre:
Az alábbi példakód létrehoz egy tárolót, és egy DataLakeFileSystemClient objektumot ad vissza későbbi használatra:
public DataLakeFileSystemClient CreateFileSystem(
DataLakeServiceClient serviceClient,
String fileSystemName) {
DataLakeFileSystemClient fileSystemClient = serviceClient.createFileSystem(fileSystemName);
return fileSystemClient;
}
Címtár létrehozása
A tárolóban a következő módszerrel hozhat létre címtárhivatkozást:
Az alábbi példakód egy könyvtárat ad hozzá egy tárolóhoz, majd hozzáad egy alkönyvtárat, és visszaad egy DataLakeDirectoryClient objektumot későbbi használatra:
public DataLakeDirectoryClient CreateDirectory(
DataLakeFileSystemClient fileSystemClient,
String directoryName,
String subDirectoryName) {
DataLakeDirectoryClient directoryClient = fileSystemClient.createDirectory(directoryName);
return directoryClient.createSubdirectory(subDirectoryName);
}
Címtár átnevezése vagy áthelyezése
A címtárak átnevezhetők vagy áthelyezhetők a következő módszerrel:
Adja meg a kívánt könyvtár elérési útját paraméterként. Az alábbi példakód bemutatja, hogyan nevezhet át alkönyvtárat:
public DataLakeDirectoryClient RenameDirectory(
DataLakeFileSystemClient fileSystemClient,
String directoryPath,
String subdirectoryName,
String subdirectoryNameNew) {
DataLakeDirectoryClient directoryClient = fileSystemClient
.getDirectoryClient(String.join("/", directoryPath, subdirectoryName));
return directoryClient.rename(
fileSystemClient.getFileSystemName(),
String.join("/", directoryPath, subdirectoryNameNew));
}
Az alábbi példakód bemutatja, hogyan helyezhet át egy alkönyvtárat egy könyvtárból egy másik könyvtárba:
public DataLakeDirectoryClient MoveDirectory(
DataLakeFileSystemClient fileSystemClient,
String directoryPathFrom,
String directoryPathTo,
String subdirectoryName) {
DataLakeDirectoryClient directoryClient = fileSystemClient
.getDirectoryClient(String.join("/", directoryPathFrom, subdirectoryName));
return directoryClient.rename(
fileSystemClient.getFileSystemName(),
String.join("/", directoryPathTo, subdirectoryName));
}
Fájl feltöltése könyvtárba
A következő módszerrel tölthet fel tartalmat egy új vagy meglévő fájlba:
Az alábbi példakód bemutatja, hogyan tölthet fel helyi fájlt egy könyvtárba a uploadFromFile
metódus használatával:
public void UploadFile(
DataLakeDirectoryClient directoryClient,
String fileName) {
DataLakeFileClient fileClient = directoryClient.getFileClient(fileName);
fileClient.uploadFromFile("filePath/sample-file.txt");
}
Ezzel a módszerrel tartalmakat hozhat létre és tölthet fel egy új fájlba, vagy beállíthatja, hogy true
a overwrite
paraméter felülírjon egy meglévő fájlt.
Adatok hozzáfűzése fájlhoz
A fájlhoz fűzendő adatokat az alábbi módszerrel töltheti fel:
Az alábbi példakód bemutatja, hogyan fűzhet adatokat egy fájl végéhez az alábbi lépésekkel:
- Hozzon létre egy
DataLakeFileClient
objektumot, amely a használt fájlerőforrást jelöli. - Adatok feltöltése a fájlba a
DataLakeFileClient.append
módszerrel. - A feltöltés befejezéséhez hívja meg a metódust a
DataLakeFileClient.flush
korábban feltöltött adatok fájlba írásához.
public void AppendDataToFile(
DataLakeDirectoryClient directoryClient) {
DataLakeFileClient fileClient = directoryClient.getFileClient("sample-file.txt");
long fileSize = fileClient.getProperties().getFileSize();
String sampleData = "Data to append to end of file";
fileClient.append(BinaryData.fromString(sampleData), fileSize);
fileClient.flush(fileSize + sampleData.length(), true);
}
Letöltés könyvtárból
Az alábbi példakód bemutatja, hogyan tölthet le egy fájlt egy könyvtárból egy helyi fájlba az alábbi lépésekkel:
- Hozzon létre egy
DataLakeFileClient
objektumot, amely a letölteni kívánt fájlt jelöli. - A metódus használatával
DataLakeFileClient.readToFile
olvassa be a fájlt. Ez a példa egyoverwrite
meglévő fájlt felülíró paraméterttrue
állít be.
public void DownloadFile(
DataLakeDirectoryClient directoryClient,
String fileName) {
DataLakeFileClient fileClient = directoryClient.getFileClient(fileName);
fileClient.readToFile("filePath/sample-file.txt", true);
}
Könyvtár tartalmának listázása
A címtár tartalmát az alábbi módszerrel és az eredmény számbavételével listázhatja:
Az eredményben szereplő elérési utak számbavétele több kérést is eredményezhet a szolgáltatáshoz az értékek beolvasása közben.
Az alábbi példakód a könyvtárban található egyes fájlok nevét nyomtatja ki:
public void ListFilesInDirectory(
DataLakeFileSystemClient fileSystemClient,
String directoryName) {
ListPathsOptions options = new ListPathsOptions();
options.setPath(directoryName);
PagedIterable<PathItem> pagedIterable = fileSystemClient.listPaths(options, null);
java.util.Iterator<PathItem> iterator = pagedIterable.iterator();
PathItem item = iterator.next();
while (item != null) {
System.out.println(item.getName());
if (!iterator.hasNext()) {
break;
}
item = iterator.next();
}
}
Könyvtár törlése
A címtárat az alábbi módszerek egyikével törölheti:
- DataLakeDirectoryClient.delete
- DataLakeDirectoryClient.deleteIfExists
- DataLakeDirectoryClient.deleteWithResponse
Az alábbi példakód egy nem létező könyvtár és a könyvtár alatti összes elérési út törlésére szolgál deleteWithResponse
:
public void DeleteDirectory(
DataLakeFileSystemClient fileSystemClient,
String directoryName) {
DataLakeDirectoryClient directoryClient = fileSystemClient.getDirectoryClient(directoryName);
// Set to true to delete all paths beneath the directory
boolean recursive = true;
directoryClient.deleteWithResponse(recursive, null, null, null);
}
Lásd még
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: