Java SDK kullanarak Azure Data Lake Storage 1. Nesil'de dosya sistemi işlemleri

Klasör oluşturma, veri dosyalarını karşıya yükleme ve indirme gibi temel işlemleri gerçekleştirmek için Azure Data Lake Storage 1. Nesil Java SDK'sını kullanmayı öğrenin. Data Lake Storage 1. Nesil hakkında daha fazla bilgi için bkz. Azure Data Lake Storage. 1. Nesil.

Data Lake Storage 1. Nesil için Java SDK API belgelerine Azure Data Lake Storage 1. Nesil Java API belgelerinden erişebilirsiniz.

Önkoşullar

Java uygulaması oluşturma

GitHub’da bulunan kod örneği, depoda dosya oluşturma, dosyaları birleştirme, dosya indirme ve depodaki bazı dosyaları silme işlemlerinde size yol gösterir. Makalenin bu bölümü, kodun ana bölümlerinde sizi yönlendirir.

  1. Komut satırından mvn archetype veya bir IDE kullanarak Maven projesi oluşturun. IntelliJ kullanarak Java projesi oluşturma yönergeleri için buraya bakın. Eclipse kullanarak proje oluşturma yönergeleri için buraya bakın.

  2. Maven pom.xml dosyanıza aşağıdaki bağımlılıkları ekleyin. /project etiketinden önce aşağıdaki kod parçacığını <ekleyin:>

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

    İlk bağımlılık, maven deposundaki Data Lake Storage 1. Nesil SDK'sını (azure-data-lake-store-sdk) kullanmaktır. İkinci bağımlılık, bu uygulama için hangi günlük altyapısının (slf4j-nop) kullanılacağını belirtmektir. Data Lake Storage 1. Nesil SDK'sı Log4j, Java günlüğü, Logback vb. gibi popüler günlük çerçeveleri arasından seçim yapmanızı sağlayan SLF4J günlük cephesini kullanır. Bu örnekte, günlük kaydını devre dışı bırakacak ve dolayısıyla slf4j-nop bağlamasını kullanacağız. Uygulamanızda diğer günlük seçeneklerini kullanmak için buraya bakın.

  3. Aşağıdaki içeri aktarma deyimlerini uygulamanıza ekleyin.

    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;
    

Kimlik Doğrulaması

Data Lake Storage 1. Nesil istemcisi oluşturma

ADLStoreClient nesnesi oluşturmak için Data Lake Storage 1. Nesil kimlik doğrulaması yaptığınızda oluşturduğunuz Data Lake Storage 1. Nesil hesap adını ve belirteç sağlayıcısını belirtmeniz gerekir (kimlik doğrulaması bölümüne bakın). Data Lake Storage 1. Nesil hesabı adının tam etki alanı adı olması gerekir. Örneğin, BURAYA DOLDUR'umydatalakestoragegen1.azuredatalakestore.net gibi bir değerle değiştirin.

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

Aşağıdaki bölümlerde yer alan kod parçacıkları bazı ortak dosya sistemi işlemlerine örnekler içermektedir. Diğer işlemleri görmek için ADLStoreClient nesnesinin tam Data Lake Storage 1. Nesil Java SDK API belgelerine bakabilirsiniz.

Dizin oluşturma

Aşağıdaki kod parçacığı, belirttiğiniz Data Lake Storage 1. Nesil hesabının kökünde bir dizin yapısı oluşturur.

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

Dosya oluşturma

Aşağıdaki kod parçacığı dizin yapısında bir dosya (c.txt) oluşturur ve dosyaya veri yazar.

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

Bayt dizisi kullanarak da dosya (d.txt) oluşturabilirsiniz.

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

Yukarıdaki kod parçacığında kullanılan getSampleContent işlevinin tanımı GitHub'daki örnekle birlikte sunulmaktadır.

Dosyanın sonuna ekleme

Aşağıdaki kod parçacığı var olan bir dosyaya içerik ekler.

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

Yukarıdaki kod parçacığında kullanılan getSampleContent işlevinin tanımı GitHub'daki örnekle birlikte sunulmaktadır.

Dosya okuma

Aşağıdaki kod parçacığı, Data Lake Storage 1. Nesil hesabındaki bir dosyadan içerik okur.

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

Dosyaları birleştirme

Aşağıdaki kod parçacığı bir Data Lake Storage 1. Nesil hesabındaki iki dosyayı birleştirir. İşlem başarılı olursa birleştirilmiş dosya, var olan iki dosyanın yerini alır.

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

Dosyayı yeniden adlandırma

Aşağıdaki kod parçacığı, Data Lake Storage 1. Nesil hesabındaki bir dosyayı yeniden adlandırır.

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

Dosyanın meta verilerini alma

Aşağıdaki kod parçacığı, Data Lake Storage 1. Nesil hesabındaki bir dosyanın meta verilerini alır.

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

Dosyanın izinlerini belirleme

Aşağıdaki kod parçacığı önceki bölümde oluşturduğunuz dosyanın izinlerini belirler.

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

Dizin içeriğini listeleme

Aşağıdaki kod parçacığı dizin içeriğini yinelemeli olarak listeler.

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

Yukarıdaki kod parçacığında kullanılan printDirectoryInfo işlevinin tanımı GitHub'daki örnekle birlikte sunulmaktadır.

Dosyaları ve klasörleri silme

Aşağıdaki kod parçacığı, bir Data Lake Storage 1. Nesil hesabındaki belirtilen dosya ve klasörleri yinelemeli olarak siler.

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

Uygulamayı derleme ve çalıştırma

  1. Bir IDE içinden çalıştırmak için Çalıştır düğmesini bulup basın. Maven’den çalıştırmak exec: exec’i kullanın.
  2. Komut satırından çalıştırabileceğiniz tek başına bir jar oluşturmak için jar’ı Maven derleme eklentisini kullanarak dahil edilen tüm bağımlılıklarla birlikte derleyin. GitHub'daki örnek kaynak kodundaki pom.xml bir örneği vardır.

Sonraki adımlar