Megosztás a következőn keresztül:


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-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.

  1. 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.

  2. 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.

  3. 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

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

  1. 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.
  2. 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.

Következő lépések