Partager via


Opérations de système de fichiers sur Azure Data Lake Storage Gen1 à l’aide du Kit de développement logiciel (SDK) Java

Découvrez comment utiliser le Kit de développement logiciel (SDK) Java Azure Data Lake Storage Gen1 pour effectuer des opérations de base telles que la création de dossiers, le chargement et le téléchargement de fichiers de données, etc. Pour plus d’informations sur Data Lake Storage Gen1, consultez Azure Data Lake Storage Gen1.

Vous pouvez accéder aux documents de l’API sdk Java pour Data Lake Storage Gen1 dans la documentation de l’API Java Azure Data Lake Storage Gen1.

Conditions préalables

  • Kit de développement Java (JDK 7 ou version ultérieure, à l’aide de Java version 1.7 ou ultérieure)
  • Un compte Data Lake Storage Gen1. Suivez les instructions de Prise en main d’Azure Data Lake Storage Gen1 avec le portail Azure.
  • Maven. Ce didacticiel utilise Maven pour les dépendances de build et de projet. Bien qu’il soit possible de créer sans utiliser de système de build comme Maven ou Gradle, ces systèmes facilitent considérablement la gestion des dépendances.
  • (Facultatif) Un IDE comme IntelliJ IDEA, Eclipse ou similaire.

Création d’une application Java

L’exemple de code disponible sur GitHub vous guide tout au long du processus de création de fichiers dans le magasin, de concaténation de fichiers, de téléchargement d’un fichier et de suppression de certains fichiers dans le magasin. Cette section de l’article vous guide tout au long des parties principales du code.

  1. Créez un projet Maven en utilisant mvn archetype à partir de la ligne de commande ou à l’aide d’un environnement de développement intégré (IDE). Vous trouverez ici des instructions sur la création d’un projet Java à l’aide d’IntelliJ. Vous trouverez ici des instructions sur la création d’un projet à l’aide d’Eclipse.

  2. Ajoutez les dépendances suivantes à votre fichier Maven pom.xml. Ajoutez l’extrait de code suivant avant la balise </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>
    

    La première dépendance consiste à utiliser le Kit de développement logiciel (SDK) Data Lake Storage Gen1 (azure-data-lake-store-sdk) à partir du référentiel maven. La deuxième dépendance consiste à spécifier l’infrastructure de journalisation (slf4j-nop) à utiliser pour cette application. Le SDK Data Lake Storage Gen1 utilise la façade de journalisation SLF4J , qui vous permet de choisir parmi un certain nombre de frameworks de journalisation populaires, tels que Log4j, journalisation Java, Logback, etc. ou aucune journalisation. Pour cet exemple, nous désactivons la journalisation et, par conséquent, nous utilisons la liaison slf4j-nop. Pour utiliser d’autres options de journalisation dans votre application, consultez ici.

  3. Ajoutez les instructions import ci-après à votre application.

    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;
    

Authentification

Créer un client Data Lake Storage Gen1

La création d’un objet ADLStoreClient nécessite que vous spécifiiez le nom du compte Data Lake Storage Gen1 et le fournisseur de jetons que vous avez générés lors de l’authentification auprès de Data Lake Storage Gen1 (consultez la section Authentification ). Le nom du compte Data Lake Storage Gen1 doit être un nom de domaine complet. Par exemple, remplacez FILL-IN-HERE par quelque chose comme mydatalakestoragegen1.azuredatalakestore.net.

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

Les extraits de code des sections suivantes contiennent des exemples d’opérations courantes de système de fichiers. Vous pouvez consulter la documentation complète de l’API JAVA data Lake Storage Gen1 de l’objet ADLStoreClient pour afficher d’autres opérations.

Créer un répertoire

L’extrait de code suivant crée une structure de répertoires à la racine du compte Data Lake Storage Gen1 que vous avez spécifié.

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

Créer un fichier

L’extrait de code suivant crée un fichier (c.txt) dans la structure de répertoires et écrit des données dans le fichier.

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

Vous pouvez également créer un fichier (d.txt) à l’aide de tableaux d’octets.

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

La définition de getSampleContent la fonction utilisée dans l’extrait de code précédent est disponible dans le cadre de l’exemple sur GitHub.

Ajouter à un fichier

L’extrait de code suivant ajoute du contenu à un fichier existant.

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

La définition de getSampleContent la fonction utilisée dans l’extrait de code précédent est disponible dans le cadre de l’exemple sur GitHub.

Lire un fichier

L’extrait de code suivant lit le contenu d’un fichier dans un compte 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.");

Concaténation de fichiers

L’extrait de code suivant concatène deux fichiers dans un compte Data Lake Storage Gen1. En cas de réussite, le fichier concaténé remplace les deux fichiers existants.

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

Renommer un fichier

L’extrait de code suivant renomme un fichier dans un compte Data Lake Storage Gen1.

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

Obtenir les métadonnées d’un fichier

L’extrait de code suivant récupère les métadonnées d’un fichier dans un compte Data Lake Storage Gen1.

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

Définir des autorisations sur un fichier

L’extrait de code suivant définit les autorisations sur le fichier que vous avez créé dans la section précédente.

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

Afficher le contenu du répertoire

L’extrait de code suivant répertorie le contenu d’un répertoire de manière récursive.

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

La définition de printDirectoryInfo la fonction utilisée dans l’extrait de code précédent est disponible dans le cadre de l’exemple sur GitHub.

Supprimer des fichiers et des dossiers

L’extrait de code suivant supprime les fichiers et dossiers spécifiés dans un compte Data Lake Storage Gen1 de manière récursive.

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

Générer et exécuter l’application

  1. Pour exécuter à partir d’un IDE, recherchez et appuyez sur le bouton Exécuter . Pour exécuter à partir de Maven, utilisez exec :exec.
  2. Pour produire un fichier jar autonome que vous pouvez exécuter à partir de la ligne de commande, générez le fichier jar avec toutes les dépendances incluses, à l’aide du plug-in d’assembly Maven. L'pom.xml dans l’exemple de code source sur GitHub a un exemple.

Étapes suivantes