عمليات نظام الملفات على 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 API Data Lake Storage Gen1 في مستندات واجهة برمجة تطبيقات Java Azure Data Lake Storage Gen1.

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

  • 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. أضف التبعيات التالية إلى ملف pom.xml Maven. أضف القصاصة البرمجية التالية قبل <علامة /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>
    

    التبعية الأولى هي استخدام Data Lake Storage Gen1 SDK (azure-data-lake-store-sdk) من مستودع maven. التبعية الثانية هي تحديد إطار عمل التسجيل (slf4j-nop) لاستخدامه لهذا التطبيق. يستخدم Data Lake Storage Gen1 SDK واجهة تسجيل SLF4J، والتي تتيح لك الاختيار من بين عدد من أطر عمل التسجيل الشائعة، مثل Log4j أو تسجيل Java أو 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، حدد موقع الزر Run واضغط عليه. للتشغيل من Maven، استخدم exec:exec.
  2. لإنتاج جرة مستقلة يمكنك تشغيلها من سطر الأوامر، قم بإنشاء jar مع تضمين جميع التبعيات، باستخدام المكون الإضافي لتجميع Maven. يحتوي pom.xml في مثال التعليمات البرمجية المصدر على GitHub على مثال.

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