Operace systému souborů na Azure Data Lake Storage Gen1 s využitím sady Java SDK

Naučte se používat sadu Azure Data Lake Storage Gen1 Java SDK k provádění základních operací, jako je vytváření složek, nahrávání a stahování datových souborů atd. Další informace o Data Lake Storage Gen1 najdete v tématu Azure Data Lake Storage Gen1.

Dokumentaci k rozhraní API sady Java SDK pro Data Lake Storage Gen1 najdete v dokumentaci k rozhraní Azure Data Lake Storage Java API Gen1.

Požadavky

  • Java Development Kit (JDK 7 nebo vyšší s využitím Java verze 1.7 nebo vyšší)
  • Data Lake Storage Gen1 účet. Postupujte podle pokynů v tématu Začínáme s Azure Data Lake Storage Gen1 pomocí Azure Portal.
  • Maven. V tomto kurzu se používá Maven pro závislosti sestavení a projektu. I když je možné sestavení vytvářet bez použití systému pro sestavení, jako je Maven a Gradle, tyto systémy podstatně usnadňují správu závislostí.
  • (Volitelné) Rozhraní IDE, jako je například IntelliJ IDEA nebo Eclipse nebo podobné.

Vytvoření aplikace Java

Ukázka kódu, která je k dispozici na GitHubu, vás provede procesem vytvoření souborů v úložišti, zřetězení souborů, stažení souboru a nakonec odstranění některých souborů v úložišti. Tato část článku vás provede hlavními částmi kódu.

  1. Vytvořte projekt Maven pomocí příkazu mvn archetype z příkazového řádku nebo pomocí integrovaného vývojového rozhraní (IDE). Pokyny k vytvoření projektu jazyka Java s použitím IntelliJ najdete zde. Pokyny k vytvoření projektu s použitím Eclipse najdete zde.

  2. Přidejte k souboru Maven pom.xml následující závislosti. Před <značku /project> přidejte následující fragment kódu:

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

    První závislostí je použití sady Data Lake Storage Gen1 SDK (azure-data-lake-store-sdk) z úložiště maven. Druhou závislostí je zadání protokolovacího rozhraní (slf4j-nop), které se pro tuto aplikaci použije. Sada Data Lake Storage Gen1 SDK používá fasádu protokolování SLF4J, která umožňuje vybrat si z řady oblíbených rozhraní protokolování, jako je Log4j, protokolování v Javě, Logback atd., nebo bez protokolování. Pro tento příklad zakážeme protokolování a použijeme tedy vazbu slf4j-nop. Pokud chcete ve své aplikaci použít jiné možnosti protokolování, přečtěte si informace zde.

  3. Přidejte do své aplikace následující příkazy pro import.

    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;
    

Authentication

Vytvoření klienta Data Lake Storage Gen1

Vytvoření objektu ADLStoreClient vyžaduje, abyste zadali název účtu Data Lake Storage Gen1 a zprostředkovatele tokenu, který jste vygenerovali při ověřování pomocí Data Lake Storage Gen1 (viz část Ověřování). Název účtu Data Lake Storage Gen1 musí být plně kvalifikovaný název domény. Například nahraďte FILL-IN-HERE něčím jako mydatalakestoragegen1.azuredatalakestore.net.

private static String accountFQDN = "FILL-IN-HERE";  // full account FQDN, not just the account name
ADLStoreClient client = ADLStoreClient.createClient(accountFQDN, provider);

Fragmenty kódu v následujících částech obsahují příklady některých běžných operací systému souborů. Další operace najdete v úplné dokumentaci k rozhraní API sady Java SDK Data Lake Storage Gen1 objektu ADLStoreClient.

Vytvoření adresáře

Následující fragment kódu vytvoří adresářovou strukturu v kořenovém adresáři Data Lake Storage Gen1 účtu, který jste zadali.

// create directory
client.createDirectory("/a/b/w");
System.out.println("Directory created.");

Vytvoření souboru

Následující fragment kódu v adresářové struktuře vytvoří soubor (c.txt) a zapíše do něj nějaká data.

// 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.");

Soubor (d.txt) můžete vytvořit také pomocí polí bajtů.

// 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.");

Definice funkce getSampleContent použité v předchozím fragmentu kódu je k dispozici jako součást ukázky na GitHubu.

Připojení k souboru

Následující fragment kódu připojí obsah k existujícímu souboru.

// append to file
stream = client.getAppendStream(filename);
stream.write(getSampleContent());
stream.close();
System.out.println("File appended.");

Definice funkce getSampleContent použité v předchozím fragmentu kódu je k dispozici jako součást ukázky na GitHubu.

Čtení souboru

Následující fragment kódu čte obsah ze souboru v účtu Data Lake Storage Gen1.

// 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.");

Řetězení souborů

Následující fragment kódu zřetězí dva soubory v účtu Data Lake Storage Gen1. V případě úspěchu se dva existující soubory nahradí zřetězeným souborem.

// 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.");

Přejmenování souboru

Následující fragment kódu přejmenuje soubor v účtu Data Lake Storage Gen1.

//rename the file
client.rename("/a/b/f.txt", "/a/b/g.txt");
System.out.println("New file renamed.");

Získání metadat souboru

Následující fragment kódu načte metadata souboru v účtu Data Lake Storage Gen1.

// get file metadata
DirectoryEntry ent = client.getDirectoryEntry(filename);
printDirectoryInfo(ent);
System.out.println("File metadata retrieved.");

Nastavení oprávnění k souboru

Následující fragment kódu nastaví oprávnění k souboru, který jste vytvořili v předchozí části.

// set file permission
client.setPermission(filename, "744");
System.out.println("File permission set.");

Výpis obsahu adresáře

Následující fragment kódu rekurzivně vypíše obsah adresáře.

// 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.");

Definice funkce printDirectoryInfo použité v předchozím fragmentu kódu je k dispozici jako součást ukázky na GitHubu.

Odstranění souborů a složek

Následující fragment kódu rekurzivně odstraní zadané soubory a složky v účtu Data Lake Storage Gen1.

// delete directory along with all the subdirectories and files in it
client.deleteRecursive("/a");
System.out.println("All files and folders deleted recursively");
promptEnterKey();

Sestavení a spuštění aplikace

  1. Pokud chcete aplikaci spustit z rozhraní IDE, stiskněte tlačítko Spustit. Pokud ji chcete spustit z Mavenu, použijte příkaz exec:exec.
  2. Jestliže chcete vytvořit samostatný soubor jar, který budete moct spustit z příkazového řádku, vytvořte ho se všemi závislostmi s použitím modulu plug-in sestavení Maven. Příklad obsahuje pom.xml v ukázkovém zdrojovém kódu na GitHubu .

Další kroky