Fájlrendszerműveletek Azure Data Lake Storage Gen1-en a Java SDK használatával
Megtudhatja, hogyan használhatja a Azure Data Lake Storage Gen1 Java SDK-t olyan alapvető műveletek végrehajtására, mint például mappák létrehozása, adatfájlok feltöltése és letöltése stb. A Data Lake Storage Gen1 kapcsolatos további információkért lásd: Azure Data Lake Storage Gen1.
A Java SDK API-dokumentációját Data Lake Storage Gen1 Azure Data Lake Storage Gen1 Java API-dokumentációjában érheti el.
Előfeltételek
- Java-fejlesztőkészlet (JDK 7 vagy újabb, Java 1.7 vagy újabb verzió használatával)
- Data Lake Storage Gen1 fiókot. Kövesse a Azure Data Lake Storage Gen1 használatának első lépéseit a Azure Portal használatával.
- Maven. Ez az oktatóanyag a Mavent használja a build- és projektfüggőségek kezeléséhez. Bár lehetséges olyan rendszerek nélkül fejleszteni, mint például a Maven vagy a Gradle, ezekkel a fejlesztőrendszerekkel sokkal egyszerűbb a függőségek kezelése.
- (Nem kötelező) IntelliJ IDEA, Eclipse vagy hasonló integrált fejlesztőkörnyezet.
Java-alkalmazás létrehozása
A GitHubon elérhető kódminta végigvezeti a fájlok tárolóban való létrehozásának, a fájlok összetűzésének, a fájlok letöltésének és az egyes fájlok tárolóból való törlésének folyamatán. A cikk ezen szakasza a kód fő részeit mutatja be.
Hozzon létre egy Maven-projektet az mvn archetype használatával parancssorból vagy egy IDE használatával. A Java-projektek IntelliJ használatával való létrehozási útmutatójáért kattintson ide. A projektek Eclipse használatával való létrehozási útmutatójáért kattintson ide.
Illessze be a következő függőségeket a Maven pom.xml nevű fájljába. Adja hozzá a következő kódrészletet a </project> címke elé:
<dependencies> <dependency> <groupId>com.microsoft.azure</groupId> <artifactId>azure-data-lake-store-sdk</artifactId> <version>2.1.5</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-nop</artifactId> <version>1.7.21</version> </dependency> </dependencies>
Az első függőség a maven-adattárból származó Data Lake Storage Gen1 SDK (
azure-data-lake-store-sdk
) használata. A második függőség az alkalmazással használandó naplózási keretrendszer (slf4j-nop
) meghatározása. A Data Lake Storage Gen1 SDK SLF4J naplózási homlokzatot használ, így számos népszerű naplózási keretrendszer közül választhat, például Log4j, Java-naplózás, Logback stb. Ebben a példában kikapcsoljuk a naplózást, mivel az slf4j-nop kötést eszközt használjuk. Az alkalmazásban való egyéb naplózási lehetőségek használatáról itt talál információt.Adja hozzá az alábbi importálási utasításokat az alkalmazáshoz.
import com.microsoft.azure.datalake.store.ADLException; import com.microsoft.azure.datalake.store.ADLStoreClient; import com.microsoft.azure.datalake.store.DirectoryEntry; import com.microsoft.azure.datalake.store.IfExists; import com.microsoft.azure.datalake.store.oauth2.AccessTokenProvider; import com.microsoft.azure.datalake.store.oauth2.ClientCredsTokenProvider; import java.io.*; import java.util.Arrays; import java.util.List;
Hitelesítés
- Az alkalmazás végfelhasználói hitelesítésével kapcsolatban lásd: Végfelhasználói hitelesítés a Java használatával Data Lake Storage Gen1 használatával.
- Az alkalmazás szolgáltatásközi hitelesítésével kapcsolatban lásd: Szolgáltatásközi hitelesítés a Java használatával Data Lake Storage Gen1 használatával.
Data Lake Storage Gen1-ügyfél létrehozása
Az ADLStoreClient objektum létrehozásához meg kell adnia a Data Lake Storage Gen1 fiók nevét és a jogkivonat-szolgáltatót, amit a Data Lake Storage Gen1 hitelesítéskor hozott létre (lásd a Hitelesítés szakaszt). A Data Lake Storage Gen1 fiók nevének teljes tartománynévnek kell lennie. Cserélje le például a FILL-IN-HERE kifejezést a mydatalakestoragegen1.azuredatalakestore.net.
private static String accountFQDN = "FILL-IN-HERE"; // full account FQDN, not just the account name
ADLStoreClient client = ADLStoreClient.createClient(accountFQDN, provider);
Az alábbi szakaszokban szereplő kódrészletek néhány gyakori fájlrendszerműveletre mutatnak példát. Megtekintheti az ADLStoreClient objektum teljes Data Lake Storage Gen1 Java SDK API-dokumentációját, hogy láthassa a többi műveletet.
Könyvtár létrehozása
Az alábbi kódrészlet létrehoz egy könyvtárstruktúrát a megadott Data Lake Storage Gen1 fiók gyökerében.
// create directory
client.createDirectory("/a/b/w");
System.out.println("Directory created.");
Fájl létrehozása
Az alábbi kódrészlet egy fájlt (c.txt) hoz létre a könyvtárstruktúrában, és adatokat ír ebbe a fájlba.
// create file and write some content
String filename = "/a/b/c.txt";
OutputStream stream = client.createFile(filename, IfExists.OVERWRITE );
PrintStream out = new PrintStream(stream);
for (int i = 1; i <= 10; i++) {
out.println("This is line #" + i);
out.format("This is the same line (%d), but using formatted output. %n", i);
}
out.close();
System.out.println("File created.");
Fájl (d.txt) létrehozásához bájttömbök is használhatók.
// create file using byte arrays
stream = client.createFile("/a/b/d.txt", IfExists.OVERWRITE);
byte[] buf = getSampleContent();
stream.write(buf);
stream.close();
System.out.println("File created using byte array.");
Az előző kódrészletben használt getSampleContent
függvény meghatározása a GitHubon található minta részeként érhető el.
Hozzáfűzés fájlhoz
Az alábbi kódrészlet egy meglévő fájlhoz fűzi hozzá a tartalmakat.
// append to file
stream = client.getAppendStream(filename);
stream.write(getSampleContent());
stream.close();
System.out.println("File appended.");
Az előző kódrészletben használt getSampleContent
függvény meghatározása a GitHubon található minta részeként érhető el.
Fájl beolvasása
Az alábbi kódrészlet egy Data Lake Storage Gen1-fiókban lévő fájlból olvas be tartalmat.
// Read File
InputStream in = client.getReadStream(filename);
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
String line;
while ( (line = reader.readLine()) != null) {
System.out.println(line);
}
reader.close();
System.out.println();
System.out.println("File contents read.");
Fájlok összefűzése
Az alábbi kódrészlet két fájlt fűz össze egy Data Lake Storage Gen1-fiókban. Ha a művelet sikeres, a rendszer az összefűzött fájllal cseréli le a két meglévő fájlt.
// concatenate the two files into one
List<String> fileList = Arrays.asList("/a/b/c.txt", "/a/b/d.txt");
client.concatenateFiles("/a/b/f.txt", fileList);
System.out.println("Two files concatenated into a new file.");
Fájl átnevezése
Az alábbi kódrészlet átnevez egy fájlt egy Data Lake Storage Gen1-fiókban.
//rename the file
client.rename("/a/b/f.txt", "/a/b/g.txt");
System.out.println("New file renamed.");
Fájl metaadatainak lekérése
Az alábbi kódrészlet egy Data Lake Storage Gen1-fiókban lévő fájl metaadatait kéri le.
// get file metadata
DirectoryEntry ent = client.getDirectoryEntry(filename);
printDirectoryInfo(ent);
System.out.println("File metadata retrieved.");
Fájlengedélyek beállítása
Az alábbi kódrészlet az előző szakaszban létrehozott fájlon állít be engedélyeket.
// set file permission
client.setPermission(filename, "744");
System.out.println("File permission set.");
Könyvtár tartalmának listázása
Az alábbi kódrészlet egy könyvtár tartalmát listázza ki rekurzív módon.
// list directory contents
List<DirectoryEntry> list = client.enumerateDirectory("/a/b", 2000);
System.out.println("Directory listing for directory /a/b:");
for (DirectoryEntry entry : list) {
printDirectoryInfo(entry);
}
System.out.println("Directory contents listed.");
Az előző kódrészletben használt printDirectoryInfo
függvény meghatározása a GitHubon található minta részeként érhető el.
Fájlok és mappák törlése
Az alábbi kódrészlet rekurzív módon törli a megadott fájlokat és mappákat egy Data Lake Storage Gen1-fiókban.
// delete directory along with all the subdirectories and files in it
client.deleteRecursive("/a");
System.out.println("All files and folders deleted recursively");
promptEnterKey();
Az alkalmazás fordítása és futtatása
- Az integrált fejlesztőkörnyezetben történő futtatáshoz keresse meg a Futtatás gombot, és kattintson rá. A Mavenben történő futtatáshoz használja az exec:exec beépülő modult.
- Parancssorból futtatható, különálló jar-fájlt az összes függőség és a Maven Assembly Plugin használatával hozhat létre. A GitHub példaforráskódjában található pom.xml van egy példa.