عمليات نظام الملفات على Azure Data Lake Storage Gen1 باستخدام Java SDK

تعرف على كيفية استخدام Azure Data Lake Storage Gen1 Java SDK لتنفيذ العمليات الأساسية مثل إنشاء المجلدات وتحميل ملفات البيانات وتنزيلها وما إلى ذلك. لمزيد من المعلومات حول Data Lake Storage Gen1، راجع Azure Data Lake Storage Gen1.

يمكنك الوصول إلى مستندات واجهة برمجة تطبيقات Java SDK Data Lake Storage Gen1 في مستندات واجهة برمجة تطبيقات Java Gen1 Azure Data Lake Storage.

المتطلبات الأساسية

  • Java Development Kit (JDK 7 أو أعلى ، باستخدام إصدار Java 1.7 أو أعلى)
  • حساب Data Lake Storage Gen1. اتبع الإرشادات في بدء Azure Data Lake Storage Gen1 باستخدام مدخل Microsoft Azure.
  • ⁩Maven⁧⁩. يستخدم هذا البرنامج التعليمي Maven لتبعيات البناء والمشروع. على الرغم من أنه من الممكن البناء دون استخدام نظام بناء مثل Maven أو Gradle ، إلا أن هذه الأنظمة تجعل من الأسهل بكثير إدارة التبعيات.
  • (اختياري) و IDE مثل IntelliJ IDEA أو Eclipse أو ما شابه ذلك.

قم بإنشاء تطبيق Java

ترشدك عينة التعليمات البرمجية المتوفرة على GitHub خلال عملية إنشاء الملفات في المتجر ، وتسلسل الملفات ، وتنزيل ملف ، وحذف بعض الملفات في المتجر. يرشدك هذا القسم من المقالة عبر الأجزاء الرئيسية من التعليمات البرمجية.

  1. إنشاء مشروع Maven باستخدام النموذج الأصلي mvn من سطر الأوامر أو باستخدام IDE. للحصول على إرشادات حول كيفية إنشاء مشروع Java باستخدام IntelliJ، راجع هنا. للحصول على إرشادات حول كيفية إنشاء مشروع باستخدام Eclipse، راجع هنا.

  2. أضف التبعيات التالية إلى ملف Mavenpom.xml . أضف المقتطف التالي قبل <العلامة /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>
    

    التبعية الأولى هي استخدام SDK Data Lake Storage Gen1 (azure-data-lake-store-sdk) من مستودع maven. التبعية الثانية هي تحديد إطار التسجيل (slf4j-nop) لاستخدامه لهذا التطبيق. تستخدم Data Lake Storage Gen1 SDK واجهة تسجيل SLF4J ، والتي تتيح لك الاختيار من بين عدد من أطر التسجيل الشائعة ، مثل Log4j أو Java Loglogging أو Logback وما إلى ذلك ، أو بدون تسجيل. على سبيل المثال ، نقوم بتعطيل التسجيل ، وبالتالي نستخدم ربط slf4j-nop . لاستخدام خيارات تسجيل أخرى في تطبيقك، راجع هنا.

  3. أضف عبارات الاستيراد التالية إلى التطبيق الخاص بك.

    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;
    

المصادقة

إنشاء عميل Data Lake Storage Gen1

يتطلب إنشاء كائن ADLStoreClient تحديد اسم حساب Data Lake Storage Gen1 وموفر الرمز المميز الذي قمت بإنشائه عند المصادقة باستخدام Data Lake Storage Gen1 (راجع قسم المصادقة). يجب أن يكون اسم حساب Data Lake Storage Gen1 اسم نطاق مؤهلا بالكامل. على سبيل المثال، استبدل FILL-IN-HERE بشيء مثل mydatalakestoragegen1.azuredatalakestore.net.

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

تحتوي مقتطفات التعليمات البرمجية في الأقسام التالية على أمثلة لبعض عمليات نظام الملفات الشائعة. يمكنك إلقاء نظرة على مستندات واجهة برمجة تطبيقات Java SDK الكاملة Data Lake Storage Gen1 لكائن ADLStoreClient للاطلاع على العمليات الأخرى.

إنشاء دليل

ينشئ المقتطف التالي بنية دليل في جذر حساب Data Lake Storage Gen1 الذي حددته.

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

إنشاء الملف

ينشئ المقتطف التالي ملفا (c.txt) في بنية الدليل ويكتب بعض البيانات إلى الملف.

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

يمكنك أيضا إنشاء ملف (d.txt) باستخدام صفائف البايت.

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

يتوفر تعريف getSampleContent الدالة المستخدمة في المقتطف السابق كجزء من العينة على GitHub.

إلحاق ملف

يلحق المقتطف التالي المحتوى بملف موجود.

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

يتوفر تعريف getSampleContent الدالة المستخدمة في المقتطف السابق كجزء من العينة على GitHub.

قراءة الملف

يقرأ المقتطف التالي محتوى من ملف في حساب 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.");

سَلْسَلة الملفات

يقوم المقتطف التالي بتسلسل ملفين في حساب Data Lake Storage Gen1. في حالة نجاحه، يحل الملف المتسلسل محل الملفين الموجودين.

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

إعادة تسمية ملف

يعيد المقتطف التالي تسمية ملف في حساب Data Lake Storage Gen1.

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

الحصول على بيانات تعريف لملف

يسترد المقتطف التالي بيانات التعريف لملف في حساب Data Lake Storage Gen1.

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

تعيين الأذونات على ملف

يقوم المقتطف التالي بتعيين الأذونات على الملف الذي قمت بإنشائه في القسم السابق.

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

قائمة محتويات الدليل

يسرد المقتطف التالي محتويات الدليل بشكل متكرر.

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

يتوفر تعريف printDirectoryInfo الدالة المستخدمة في المقتطف السابق كجزء من العينة على GitHub.

حذف الملفات والمجلدات

يحذف المقتطف التالي الملفات والمجلدات المحددة في حساب Data Lake Storage Gen1، بشكل متكرر.

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

بناء وتشغيل التطبيق

  1. للتشغيل من داخل IDE، حدد موقع الزر تشغيل واضغط عليه. للتشغيل من Maven، استخدم exec :exec.
  2. لإنتاج جرة مستقلة يمكنك تشغيلها من سطر الأوامر ، قم بإنشاء الجرة مع تضمين جميع التبعيات ، باستخدام المكون الإضافي لتجميع Maven. تحتوي pom.xml في التعليمات البرمجية المصدر على GitHub على مثال.

الخطوات التالية