Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Узнайте, как использовать пакет SDK Java для Azure Data Lake Storage 1-го поколения для выполнения основных операций, таких как создание папок, отправка и скачивание файлов данных и т. д. Дополнительные сведения о Data Lake Storage 1-го поколения см. в статье Azure Data Lake Storage 1-го поколения.
Вы можете получить доступ к документации по API SDK Java для Data Lake Storage Gen1 в документации по API Azure Data Lake Storage Gen1.
Предпосылки
- Пакет средств разработки Java (JDK 7 или более поздней версии с помощью Java версии 1.7 или более поздней версии)
- Учетная запись Data Lake Storage 1-го поколения. Следуйте инструкциям , чтобы начать работу с Azure Data Lake Storage первого поколения с помощью портала Azure.
- Maven. В этом руководстве используется Maven для сборки и управления зависимостями проекта. Хотя возможно собирать без использования такой системы сборки, как Maven или Gradle, эти системы значительно упрощают управление зависимостями.
- Интегрированная среда разработки, например IntelliJ IDEA, Eclipse или аналогичная (необязательно).
Создание приложения Java
Пример кода, доступный на сайте GitHub , описывает процесс создания файлов в хранилище, объединения файлов, скачивания файла и удаления некоторых файлов в хранилище. В этом разделе статьи рассматриваются основные части кода.
Создайте проект Maven с использованием архетипа mvn с помощью командной строки или интегрированной среды разработки (IDE). Инструкции по созданию проекта Java с использованием IntelliJ см. здесь. Инструкции по созданию проекта с использованием Eclipse см. здесь.
Добавьте приведенные ниже зависимости в файл Maven pom.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 1-го поколения (
azure-data-lake-store-sdk) из репозитория Maven. Вторая зависимость нужна, чтобы указать, какие платформы ведения журналов (slf4j-nop) будут использоваться для этого приложения. Пакет SDK для Data Lake Storage 1-го поколения использует библиотеку SLF4J, которая позволяет выбрать любую из ряда популярных платформ ведения журналов, таких как Log4j, платформа для Java, Logback и др., или отключить ведение журнала. В этом примере мы отключим ведение журнала, так как используем привязку slf4j-nop. Сведения о других вариантах ведения журнала в приложении см. здесь.Добавьте следующие инструкции импорта в приложение.
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 1-го поколения с помощью Java.
- Для аутентификации между службами в вашем приложении см. Аутентификация между службами с использованием Data Lake Storage Gen1 и Java.
Создание клиента Data Lake Storage 1-го поколения
Для создания объекта ADLStoreClient необходимо указать имя учетной записи Data Lake Storage Gen1 и поставщика токенов, созданного при аутентификации с Data Lake Storage Gen1 (см. раздел Аутентификация). Имя учетной записи Data Lake Storage 1-го поколения должно быть полным доменным именем. Например, замените 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);
Фрагменты кода в следующих разделах содержат примеры некоторых распространенных операций файловой системы. Вы можете просмотреть полную документацию API Java для хранилища данных поколения Gen1 объекта ADLStoreClient, чтобы ознакомиться с другими операциями.
Создание каталога
Следующий фрагмент кода создает структуру каталогов в корне указанной учетной записи Data Lake Storage 1-го поколения.
// 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 1-го поколения.
// 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 1-го поколения. При успешном выполнении сцепленный файл заменяет два существующих файла.
// 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 1-го поколения.
//rename the file
client.rename("/a/b/f.txt", "/a/b/g.txt");
System.out.println("New file renamed.");
Получение метаданных для файла
Следующий фрагмент кода извлекает метаданные для файла в учетной записи Data Lake Storage 1-го поколения.
// 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 1-го поколения рекурсивно.
// delete directory along with all the subdirectories and files in it
client.deleteRecursive("/a");
System.out.println("All files and folders deleted recursively");
promptEnterKey();
Создание и запуск приложения
- Чтобы запустить из интегрированной среды разработки, найдите и нажмите кнопку "Выполнить ". Чтобы запустить из Maven, используйте exec:exec.
- Чтобы создать автономный jar-файл, который можно запустить из командной строки сборки jar со всеми зависимостями, включенными, с помощью подключаемого модуля сборки Maven. В примере исходного кода на GitHub есть pom.xml.