Delen via


Bestandssysteembewerkingen in Azure Data Lake Storage Gen1 met behulp van Java SDK

Meer informatie over het gebruik van de Azure Data Lake Storage Gen1 Java SDK voor het uitvoeren van basisbewerkingen, zoals het maken van mappen, het uploaden en downloaden van gegevensbestanden, enzovoort. Zie Azure Data Lake Storage Gen1voor meer informatie over Data Lake Storage Gen1.

U hebt toegang tot de Java SDK-API-documenten voor Data Lake Storage Gen1 op Java API-documenten van Azure Data Lake Storage Gen1.

Benodigdheden

  • Java Development Kit (JDK 7 of hoger, met java-versie 1.7 of hoger)
  • Data Lake Storage Gen1 account. Volg de instructies in Aan de slag met Azure Data Lake Storage Gen1 met behulp van azure Portal.
  • Maven. In deze handleiding wordt Maven gebruikt voor build- en projectafhankelijkheden. Hoewel het mogelijk is om te bouwen zonder een buildsysteem zoals Maven of Gradle te gebruiken, is het veel eenvoudiger om afhankelijkheden te beheren.
  • (Optioneel) Een IDE zoals IntelliJ IDEA of Eclipse of iets vergelijkbaars.

Een Java-toepassing maken

Het codevoorbeeld dat beschikbaar is op GitHub begeleidt u bij het maken van bestanden in de store, het samenvoegen van bestanden, het downloaden van een bestand en het verwijderen van enkele bestanden in de store. In deze sectie van het artikel wordt u begeleid bij de belangrijkste onderdelen van de code.

  1. Maak een Maven-project met behulp van mvn archetype vanaf de opdrachtregel of met behulp van een IDE. Hier vindt u instructies over het maken van een Java-project met behulp van IntelliJ. Hier vindt u instructies over het maken van een Java-project met behulp van Eclipse.

  2. Voeg de volgende afhankelijkheden toe aan het pom.xml-bestand in Maven. Voeg het volgende codefragment toe vóór de >:

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

    De eerste afhankelijkheid is het gebruik van de Data Lake Storage Gen1 SDK (azure-data-lake-store-sdk) uit de Maven-opslagplaats. De tweede afhankelijkheid is het opgeven van het framework voor logboekregistratie (slf4j-nop) dat voor deze toepassing moet worden gebruikt. De Data Lake Storage Gen1 SDK maakt gebruik van SLF4J logboekregistratiefaçade, waarmee u kunt kiezen uit een aantal populaire frameworks voor logboekregistratie, zoals Log4j, Java-logboekregistratie, Logback, enzovoort, of geen logboekregistratie. In dit voorbeeld wordt logboekregistratie uitgeschakeld. Daarom wordt de binding slf4j-nop gebruikt. Als u andere opties voor logboekregistratie in uw app wilt gebruiken, raadpleegt u hier.

  3. Voeg de volgende importinstructies toe aan uw toepassing.

    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;
    

Authenticatie

Een Data Lake Storage Gen1-client maken

Als u een ADLStoreClient--object maakt, moet u de Data Lake Storage Gen1-accountnaam en de tokenprovider opgeven die u hebt gegenereerd wanneer u bent geverifieerd met Data Lake Storage Gen1 (zie de sectie Verificatie). De Data Lake Storage Gen1-accountnaam moet een volledig gekwalificeerde domeinnaam zijn. Vervang bijvoorbeeld FILL-IN-HERE- door iets als mydatalakestoragegen1.azuredatalakestore.net.

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

De codefragmenten in de volgende secties bevatten voorbeelden van enkele veelvoorkomende bestandssysteembewerkingen. U kunt de volledige Java SDK-API-documenten van Data Lake Storage Gen1 bekijken van het ADLStoreClient-object om andere bewerkingen te bekijken.

Een map maken

In het volgende codefragment wordt een mapstructuur gemaakt in de hoofdmap van het Data Lake Storage Gen1-account dat u hebt opgegeven.

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

Een bestand maken

Het volgende codefragment maakt een bestand (c.txt) in de mapstructuur en schrijft enkele gegevens naar het bestand.

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

U kunt ook een bestand (d.txt) maken met bytematrices.

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

De definitie voor getSampleContent functie die in het voorgaande codefragment wordt gebruikt, is beschikbaar als onderdeel van de voorbeeld-op GitHub.

Toevoegen aan een bestand

Het volgende codefragment voegt inhoud toe aan een bestaand bestand.

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

De definitie voor getSampleContent functie die in het voorgaande codefragment wordt gebruikt, is beschikbaar als onderdeel van de voorbeeld-op GitHub.

Een bestand lezen

Het volgende codefragment leest inhoud uit een bestand in een Data Lake Storage Gen1-account.

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

Bestanden samenvoegen

Het volgende codefragment voegt twee bestanden samen in een Data Lake Storage Gen1-account. Als dit lukt, vervangt het samengevoegde bestand de twee bestaande bestanden.

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

De naam van een bestand wijzigen

Het volgende codefragment wijzigt de naam van een bestand in een Data Lake Storage Gen1-account.

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

Metagegevens voor een bestand ophalen

Met het volgende codefragment worden de metagegevens voor een bestand in een Data Lake Storage Gen1-account opgehaald.

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

Machtigingen instellen voor een bestand

Met het volgende codefragment worden machtigingen ingesteld voor het bestand dat u in de vorige sectie hebt gemaakt.

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

Mapinhoud weergeven

In het volgende fragment wordt de inhoud van een map recursief vermeld.

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

De definitie voor printDirectoryInfo functie die in het voorgaande codefragment wordt gebruikt, is beschikbaar als onderdeel van de voorbeeld-op GitHub.

Bestanden en mappen verwijderen

Met het volgende codefragment worden de opgegeven bestanden en mappen in een Data Lake Storage Gen1-account recursief verwijderd.

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

De toepassing bouwen en uitvoeren

  1. Als u vanuit een IDE wilt uitvoeren, zoekt en drukt u op de knop Uitvoeren. Als u wilt uitvoeren vanuit Maven, gebruikt u exec:exec.
  2. Als je een standalone jar wilt maken die je vanaf de commandoregel kunt uitvoeren, bouw dan de jar met alle inbegrepen afhankelijkheden, gebruikmakend van de Maven assembly plugin. De pom.xml in de voorbeeldbroncode op GitHub heeft een voorbeeld.

Volgende stappen