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 Development Kit (Java sürüm 1.7 veya üzerini kullanan JDK 7 ya da üzeri)
- Data Lake Storage 1. Nesil hesabı. Azure portal kullanarak Azure Data Lake Storage 1. Nesil'i kullanmaya başlama başlığındaki yönergeleri izleyin.
- Maven'ın. Bu eğiticide, yapı ve proje bağımlılıkları için Maven kullanılır. Maven veya Gradle gibi bir yapı sistemi olmadan derleme yapmak mümkün olsa da bu sistemler bağımlılıkların yönetilmesini çok daha kolay hale getirir.
- (İsteğe bağlı) IntelliJ IDEA, Eclipse vb. bir IDE.
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.
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.
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.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ı
- Uygulamanız için son kullanıcı kimlik doğrulaması için bkz. Java kullanarak Data Lake Storage 1. Nesil ile son kullanıcı kimlik doğrulaması.
- Uygulamanız için hizmet-hizmet kimlik doğrulaması için bkz. Java kullanarak Data Lake Storage 1. Nesil ile hizmet-hizmet 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
- 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.
- 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.