Dela via


Filsystemåtgärder på Azure Data Lake Storage Gen1 med Java SDK

Lär dig hur du använder Azure Data Lake Storage Gen1 Java SDK för att utföra grundläggande åtgärder som att skapa mappar, ladda upp och ladda ned datafiler osv. Mer information om Data Lake Storage Gen1 finns i Azure Data Lake Storage Gen1.

Du kan komma åt Java SDK API-dokumenten för Data Lake Storage Gen1 i Java API-dokumenten för Azure Data Lake Storage Gen1.

Förutsättningar

  • Java Development Kit (JDK 7 eller senare, med Java version 1.7 eller senare)
  • Data Lake Storage Gen1-konto. Följ anvisningarna i Kom igång med Azure Data Lake Storage Gen1 med hjälp av Azure-portalen.
  • Maven. Den här handledningen använder Maven för bygg- och projektberoenden. Även om det är möjligt att skapa utan att använda ett byggsystem som Maven eller Gradle, blir dessa system mycket enklare att hantera beroenden.
  • (Valfritt) Och IDE som IntelliJ IDEA eller Eclipse eller liknande.

Skapa ett Java-program

Kodexemplet som är tillgängligt på GitHub vägleder dig genom processen att skapa filer i arkivet, sammanfoga filer, ladda ned en fil och ta bort vissa filer i arkivet. Det här avsnittet i artikeln beskriver de viktigaste delarna av koden.

  1. Skapa ett Maven-projekt med mvn archetype från kommandoraden eller med hjälp av en IDE. Anvisningar för hur du skapar ett Java-projekt med IntelliJ finns här. Anvisningar för hur du skapar ett Java-projekt med Eclipse finns här.

  2. Lägg till följande beroenden till din Maven pom.xml-fil. Lägg till följande kodfragment före taggen </project> :

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

    Det första beroendet är att använda Data Lake Storage Gen1 SDK (azure-data-lake-store-sdk) från maven-lagringsplatsen. Det andra beroendet är att ange det loggningsramverk (slf4j-nop) som ska användas för det här programmet. Data Lake Storage Gen1 SDK använder SLF4J-loggningsfasad , vilket gör att du kan välja bland ett antal populära loggningsramverk som Log4j, Java-loggning, Logback osv. eller ingen loggning. I det här exemplet inaktiverar vi loggning, därför använder vi slf4j-nop bindning. Om du vill använda andra loggningsalternativ i din app kan du läsa här.

  3. Lägg till följande importsatser i din applikation.

    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;
    

Autentisering

Skapa en Data Lake Storage Gen1-klient

När du skapar ett ADLStoreClient-objekt måste du ange kontonamnet för Data Lake Storage Gen1 och tokenprovidern som du genererade när du autentiserade med Data Lake Storage Gen1 (se avsnittet Autentisering ). Data Lake Storage Gen1-kontots namn måste vara ett fullständigt domännamn. Ersätt till exempel FILL-IN-HERE med något som liknar mydatalakestoragegen1.azuredatalakestore.net.

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

Kodfragmenten i följande avsnitt innehåller exempel på några vanliga filsystemåtgärder. Du kan titta på de fullständiga Java SDK API-dokumenten för Data Lake Storage Gen1 i ADLStoreClient-objektet för att se andra åtgärder.

Skapa en katalog

Följande kodfragment skapar en katalogstruktur i roten för det Data Lake Storage Gen1-konto som du angav.

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

Skapa en fil

Följande kodfragment skapar en fil (c.txt) i katalogstrukturen och skriver vissa data till filen.

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

Du kan också skapa en fil (d.txt) med bytematriser.

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

Definitionen för getSampleContent funktionen som används i föregående kodfragment är tillgänglig som en del av exemplet på GitHub.

Lägg till i en fil

Följande kodfragment lägger till innehåll i en befintlig fil.

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

Definitionen för getSampleContent funktionen som används i föregående kodfragment är tillgänglig som en del av exemplet på GitHub.

Läsa en fil

Följande kodfragment läser innehåll från en fil i ett Data Lake Storage Gen1-konto.

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

Sammanfoga filer

Följande kodfragment sammanfogar två filer i ett Data Lake Storage Gen1-konto. Om det lyckas ersätter den sammanfogade filen de två befintliga filerna.

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

Byt namn på en fil

Följande kodfragment byter namn på en fil i ett Data Lake Storage Gen1-konto.

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

Hämta metadata för en fil

Följande kodfragment hämtar metadata för en fil i ett Data Lake Storage Gen1-konto.

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

Ange behörigheter för en fil

Följande kodfragment anger behörigheter för filen som du skapade i föregående avsnitt.

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

Visa katalogens innehåll

I följande kodfragment visas innehållet i en katalog rekursivt.

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

Definitionen för printDirectoryInfo funktionen som används i föregående kodfragment är tillgänglig som en del av exemplet på GitHub.

Ta bort filer och mappar

Följande kodfragment tar bort de angivna filerna och mapparna i ett Data Lake Storage Gen1-konto rekursivt.

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

Skapa och köra programmet

  1. Om du vill köra inifrån en IDE letar du upp och trycker på knappen Kör . Om du vill köra från Maven använder du exec:exec.
  2. Skapa en fristående jar som du kan köra från kommandoraden genom att skapa jar-filen med alla beroenden som ingår med hjälp av plugin-programmet för Maven-sammansättning. pom.xml i exempelkällan på GitHub har ett exempel.

Nästa steg