Operasi sistem file pada Azure Data Lake Storage Gen1 menggunakan Java SDK

Pelajari cara menggunakan Azure Data Lake Storage Gen1 Java SDK untuk melakukan operasi dasar seperti membuat folder, mengunggah dan mengunduh file data, dll. Untuk informasi selengkapnya tentang Data Lake Storage Gen1, lihat Azure Data Lake Storage Gen1.

Anda dapat mengakses dokumen Java SDK API untuk Data Lake Storage Gen1 di dokumen Azure Data Lake Storage Gen1 Java API.

Prasyarat

  • Java Development Kit (JDK 7 atau lebih tinggi, menggunakan Java versi 1.7 atau lebih tinggi)
  • Akses Data Lake Storage Gen1. Ikuti instruksi di Memulai dengan Azure Data Lake Storage Gen1 menggunakan portal Microsoft Azure.
  • Maven. Tutorial ini menggunakan Maven untuk build dan dependensi proyek. Meskipun dimungkinkan untuk membangun tanpa menggunakan sistem build seperti Maven atau Gradle, sistem ini membuat jauh lebih mudah untuk mengelola dependensi.
  • (Opsional) Dan IDE seperti IntelliJ IDEA atau Eclipse atau sejenisnya.

Membuat aplikasi Java

Sampel kode yang tersedia di GitHub memandu Anda melalui proses pembuatan file di toko, menggabungkan file, mengunduh file, dan menghapus beberapa file di toko. Bagian artikel ini memandu Anda melalui bagian utama kode.

  1. Buat proyek Maven menggunakan arketipe mvn dari baris perintah atau menggunakan IDE. Untuk petunjuk tentang cara membuat proyek Java menggunakan IntelliJ, lihat di sini. Untuk petunjuk tentang cara membuat proyek menggunakan Eclipse, lihat di sini.

  2. Tambahkan dependensi berikut ke file pom.xml Maven Anda. Tambahkan cuplikan berikut sebelum <tag /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>
    

    Ketergantungan pertama adalah menggunakan SDK Data Lake Storage Gen1 (azure-data-lake-store-sdk) dari repositori maven. Dependensi kedua adalah menentukan kerangka kerja pengelogan (slf4j-nop) untuk digunakan untuk aplikasi ini. Data Lake Storage Gen1 SDK menggunakan fasad pengelogan SLF4J, yang memungkinkan Anda memilih dari sejumlah kerangka kerja pengelogan populer, seperti Log4j, pengelogan Java, Logback, dll., atau tanpa pengelogan. Untuk contoh ini, kami menonaktifkan pengelogan, karenanya kami menggunakan pengikatan slf4j-nop. Untuk menggunakan opsi pengelogan lainnya di aplikasi Anda, lihat di sini.

  3. Tambahkan pernyataan impor berikut ke aplikasi Anda.

    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;
    

Autentikasi

Membuat klien Data Lake Storage Gen1

Membuat objek ADLStoreClient mengharuskan Anda menentukan nama akun Data Lake Storage Gen1 dan penyedia token yang Anda buat saat mengautentikasi dengan Data Lake Storage Gen1 (lihat bagian Autentikasi). Nama akun Data Lake Storage Gen1 harus menjadi nama domain yang sepenuhnya memenuhi syarat. Misalnya, ganti ISI-DI-SINI dengan sesuatu seperti mydatalakestoragegen1.azuredatalakestore.net.

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

Cuplikan kode di bagian berikut berisi contoh beberapa operasi sistem file umum. Anda dapat melihat dokumen Data Lake Storage Gen1 Java SDK API lengkap dari objek ADLStoreClient untuk melihat operasi lainnya.

Buat direktori

Cuplikan berikut membuat struktur direktori di akar akun Data Lake Storage Gen1 yang Anda tentukan.

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

Buat file

Cuplikan berikut membuat file (c.txt) dalam struktur direktori dan menulis beberapa data ke file.

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

Anda juga dapat membuat file (d.txt) menggunakan array 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.");

Definisi untuk fungsi getSampleContent yang digunakan dalam cuplikan sebelumnya tersedia sebagai bagian dari sampel pada GitHub.

Menambahkan ke file

Cuplikan berikut menambahkan konten ke file yang sudah ada.

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

Definisi untuk fungsi getSampleContent yang digunakan dalam cuplikan sebelumnya tersedia sebagai bagian dari sampel pada GitHub.

Membaca file

Cuplikan berikut membaca konten dari file di akun 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.");

Menggabungkan file

Cuplikan berikut menggabungkan dua file dalam akun Data Lake Storage Gen1. Jika berhasil, file yang digabungkan akan menggantikan dua file yang ada.

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

Mengganti nama file

Cuplikan berikut mengganti nama file di akun Data Lake Storage Gen1.

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

Mendapatkan metadata untuk file

Cuplikan berikut mengambil metadata untuk file di akun Data Lake Storage Gen1.

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

Mengatur izin pada file

Cuplikan berikut ini mengatur izin pada file yang Anda buat di bagian sebelumnya.

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

Daftar isi direktori

Cuplikan berikut mencantumkan isi direktori, secara berulang.

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

Definisi untuk fungsi printDirectoryInfo yang digunakan dalam cuplikan sebelumnya tersedia sebagai bagian dari sampel pada GitHub.

Hapus file dan folder

Cuplikan berikut menghapus file dan folder yang ditentukan di akun Data Lake Storage Gen1, secara berulang.

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

Membangun dan menjalankan aplikasi

  1. Untuk menjalankan dari dalam IDE, temukan dan tekan tombol Jalankan. Untuk menjalankan dari Maven, gunakan exec:exec.
  2. Untuk menghasilkan stoples mandiri yang dapat Anda jalankan dari baris perintah, buat stoples dengan menyertakan semua dependensi, menggunakan plugin perakitan Maven. Contoh pom.xml dalam contoh kode sumber pada GitHub memiliki contoh.

Langkah berikutnya