Operacje systemu plików w usłudze Azure Data Lake Storage Gen1 przy użyciu zestawu Java SDK

Dowiedz się, jak używać zestawu SDK java usługi Azure Data Lake Storage Gen1 do wykonywania podstawowych operacji, takich jak tworzenie folderów, przekazywanie i pobieranie plików danych itp. Aby uzyskać więcej informacji na temat Data Lake Storage Gen1, zobacz Azure Data Lake Storage Gen1.

Dostęp do dokumentacji interfejsu API zestawu Java SDK dla Data Lake Storage Gen1 można uzyskać w dokumentacji interfejsu API języka Java usługi Azure Data Lake Storage Gen1.

Wymagania wstępne

  • Zestaw Java Development Kit (JDK 7 lub nowszy, korzystający z języka Java w wersji 1.7 lub nowszej)
  • Data Lake Storage Gen1 konto. Postępuj zgodnie z instrukcjami w temacie Rozpoczynanie pracy z usługą Azure Data Lake Storage Gen1 przy użyciu Azure Portal.
  • Maven. Ten samouczek używa programu Maven na potrzeby zależności między kompilacją i projektem. Chociaż istnieje możliwość kompilacji bez używania systemu kompilacji, takiego jak Maven lub Gradle, systemy te znacznie ułatwiają zarządzanie zależnościami.
  • (Opcjonalnie) Wtyczka IntelliJ IDEA lub Eclipse przypominająca środowisko IDE lub podobna.

Tworzenie aplikacji Java

Przykładowy kod dostępny w usłudze GitHub przeprowadzi Cię przez proces tworzenia plików w magazynie, łączenia plików, pobierania pliku i usuwania niektórych plików z magazynu. Ta część artykułu przeprowadzi Cię przez najważniejsze fragmenty kodu.

  1. Utwórz projekt Maven za pomocą polecenia mvn archetype w wierszu polecenia lub w środowisku IDE. Aby uzyskać instrukcje dotyczące sposobu tworzenia projektu Java przy użyciu wtyczki IntelliJ, zobacz tutaj. Aby uzyskać instrukcje dotyczące sposobu tworzenia projektu Java przy użyciu wtyczki Eclipse, zobacz tutaj.

  2. Dodaj poniższe zależności do Twojego pliku pom.xml programu Maven. Dodaj następujący fragment kodu przed tagiem< /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>
    

    Pierwsza zależność polega na użyciu zestawu SDK Data Lake Storage Gen1 (azure-data-lake-store-sdk) z repozytorium maven. Drugą zależnością (slf4j-nop) jest określenie struktury rejestrowania używanej dla tej aplikacji. Zestaw SDK Data Lake Storage Gen1 używa fasady rejestrowania SLF4J, która umożliwia wybór spośród wielu popularnych struktur rejestrowania, takich jak Log4j, Rejestrowanie Java, Logback itp., lub brak rejestrowania. W tym przykładzie wyłączyliśmy rejestrowanie, dlatego używamy powiązania slf4j-nop. Aby używać innych opcji rejestrowania w aplikacji, zobacz tutaj.

  3. Dodaj do swojej aplikacji następujące instrukcje importowania.

    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

Tworzenie klienta Data Lake Storage Gen1

Utworzenie obiektu ADLStoreClient wymaga określenia nazwy konta Data Lake Storage Gen1 i dostawcy tokenu wygenerowanego podczas uwierzytelniania za pomocą Data Lake Storage Gen1 (zobacz sekcję Uwierzytelnianie). Nazwa konta Data Lake Storage Gen1 musi być w pełni kwalifikowaną nazwą domeny. Na przykład zastąp ciąg FILL-IN-HERE ciągiem podobny do 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 kodu w poniższych sekcjach zawierają przykłady niektórych typowych operacji systemu plików. Aby wyświetlić inne operacje, możesz zapoznać się z pełnymi Data Lake Storage Gen1 dokumentacją interfejsu API zestawu Java SDK obiektu ADLStoreClient.

Tworzenie katalogu

Poniższy fragment kodu tworzy strukturę katalogów w katalogu głównym określonego konta Data Lake Storage Gen1.

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

Tworzenie pliku

Poniższy fragment kodu tworzy plik (c.txt) w strukturze katalogów i zapisuje pewne dane do tego pliku.

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

Możesz również utworzyć plik (d.txt) przy użyciu tablic typu Byte.

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

Definicja funkcji getSampleContent używana w poprzednim fragmencie kodu jest dostępna jako część przykładu w serwisie GitHub.

Dołączanie do pliku

Poniższy fragment kodu dołącza zawartość do istniejącego pliku.

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

Definicja funkcji getSampleContent używana w poprzednim fragmencie kodu jest dostępna jako część przykładu w serwisie GitHub.

Odczytywanie pliku

Poniższy fragment kodu odczytuje zawartość z pliku na koncie 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.");

Łączenie plików

Poniższy fragment kodu łączy dwa pliki na koncie Data Lake Storage Gen1. W przypadku powodzenia połączony plik zastępuje te dwa istniejące pliki.

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

Zmienianie nazwy pliku

Poniższy fragment kodu zmienia nazwę pliku na koncie Data Lake Storage Gen1.

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

Pobranie metadanych dla pliku

Poniższy fragment kodu pobiera metadane dla pliku na koncie Data Lake Storage Gen1.

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

Ustawianie uprawnień do pliku

Poniższy fragment kodu ustawia uprawnienia do pliku, który został utworzony przez Ciebie w poprzedniej sekcji.

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

Wyświetlanie zawartości katalogu

Poniższy fragment kodu rekursywnie wyświetla zawartość katalogu.

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

Definicja funkcji printDirectoryInfo używana w poprzednim fragmencie kodu jest dostępna jako część przykładu w serwisie GitHub.

Usuwanie plików i folderów

Poniższy fragment kodu usuwa określone pliki i foldery na koncie Data Lake Storage Gen1 rekursywnie.

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

Kompilowanie i uruchamianie aplikacji

  1. Aby przeprowadzić uruchomienie z poziomu środowiska IDE, znajdź i naciśnij przycisk Run (Uruchom). Aby przeprowadzić uruchomienie z poziomu programu Maven, użyj polecenia exec:exec.
  2. Aby wygenerować autonomiczny plik JAR, który można uruchomić z poziomu wiersza polecenia, skompiluj plik JAR zawierający wszystkie zależności, używając wtyczki zestawu Maven. Przykład pom.xml w przykładowym kodzie źródłowym w usłudze GitHub .

Następne kroki