Aracılığıyla paylaş


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'leri belgelerinden erişebilirsiniz.

Önkoşullar

  • Java Geliştirme Seti (Java sürüm 1.7 veya üzerini kullanan JDK 7 veya üzeri)
  • Data Lake Storage 1. Nesil hesabı. Azure portalkullanarak Azure Data Lake Storage 1. Nesil ile başlamaya yönelik yönergeleri izleyin.
  • Maven. Bu eğiticide, yapı ve proje bağımlılıkları için Maven kullanılır. Maven veya Gradle gibi bir derleme sistemi kullanmadan derlemek mümkün olsa da, bu sistemlerin bağımlılıkları yönetmesi çok daha kolaydır.
  • (İsteğe bağlı) IntelliJ IDEA veya Eclipse ya da benzeri bir IDE.

Java uygulaması oluşturma

GitHub'da bulunan kod örneği, depoda dosya oluşturma, dosyaları birleştirme, dosya indirme ve mağazadaki bazı dosyaları silme işleminde size yol gösterir. Makalenin bu bölümü, kodun ana bölümlerinde size yol gösterir.

  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<>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 deposundan Data Lake Storage 1. Nesil SDK'sını (azure-data-lake-store-sdk) kullanmaktır. İkinci bağımlılık, bu uygulama için kullanılacak günlük çerçevesini (slf4j-nop) belirtmektir. Data Lake Storage Gen1 SDK'sı, Log4j, Java logging, Logback vb. gibi popüler günlükleme çerçeveleri arasından seçim yapmanızı veya hiç günlük tutmamanızı sağlayan SLF4J günlük tutma arabirimini kullanır. Bu örnekte, günlük kaydını devre dışı bırakırız, bu nedenle slf4j-nop bağını kullanırız. Uygulamanızdaki 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ğrulama

Data Lake Storage 1. Nesil istemcisi oluşturma

ADLStoreClient nesnesi oluşturmak için Data Lake Storage 1. Nesil hesabı adını ve Data Lake Storage 1. Nesil ile kimlik doğrulaması yaptığınızda oluşturduğunuz belirteç sağlayıcısını belirtmeniz gerekir (bkz. Kimlik doğrulaması bölümü). Data Lake Storage 1. Nesil hesap adının tam etki alanı adı olması gerekir. Örneğin, FILL-IN-HERE öğesini mydatalakestoragegen1.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ı yaygın dosya sistemi işlemlerinin örneklerini içerir. 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 bazı veriler 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 dizilerini kullanarak bir dosya (d.txt) de 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.");

Önceki kod parçacığında kullanılan işlevin tanımı getSampleContentGitHub'daki örneğin bir parçası olarak kullanılabilir.

Dosyaya ekleme

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

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

Önceki kod parçacığında kullanılan işlevin tanımı getSampleContentGitHub'daki örneğin bir parçası olarak kullanılabilir.

Dosyayı okuma

Aşağıdaki kod parçacığı, Data Lake Storage 1. Nesil hesabındaki bir dosyadaki içeriği 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ığı, Data Lake Storage 1. Nesil hesabındaki iki dosyayı birleştirir. Başarılı olursa, birleştirilmiş dosya mevcut 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.");

Dosya için meta verileri 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.");

Dosyada izinleri ayarlama

Aşağıdaki kod parçacığı, önceki bölümde oluşturduğunuz dosya üzerinde izinleri ayarlar.

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

Dizin içeriğini listeleme

Aşağıdaki kod parçacığı, bir dizinin 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.");

Önceki kod parçacığında kullanılan işlevin tanımı printDirectoryInfoGitHub'daki örneğin bir parçası olarak kullanılabilir.

Dosya 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. IDE'nin içinden çalıştırmak için Çalıştır düğmesini bulun ve basın. Maven'dan çalıştırmak için exec:exec komutunu kullanın.
  2. Komut satırından çalıştırabileceğiniz tek başına bir jar oluşturmak için , Maven derleme eklentisini kullanarak tüm bağımlılıkların dahil olduğu jar dosyasını oluşturun. GitHub'daki örnek kaynak kodunda pom.xml bir örnek içeriyor.

Sonraki adımlar