Operazioni del file system in Data Lake Store con Java SDKFilesystem operations on Data Lake Store using Java SDK

Informazioni su come usare l'SDK Java con Azure Data Lake Store per eseguire le operazioni di base, ad esempio creare cartelle, caricare e scaricare i file di dati e così via. Per altre informazioni su Data Lake, vedere Azure Data Lake Store.Learn how to use the Azure Data Lake Store Java SDK to perform basic operations such as create folders, upload and download data files, etc. For more information about Data Lake, see Azure Data Lake Store.

Per la documentazione API dell'SDK Java per Azure Data Lake Store accedere a Documentazione API Java di Azure Data Lake Store.You can access the Java SDK API docs for Azure Data Lake Store at Azure Data Lake Store Java API docs.

PrerequisitiPrerequisites

  • Kit di sviluppo Java (JDK 7 o versione successiva, usando Java versione 1.7 o successive)Java Development Kit (JDK 7 or higher, using Java version 1.7 or higher)
  • Account di Azure Data Lake Store.Azure Data Lake Store account. Seguire le istruzioni fornite in Introduzione ad Azure Data Lake Store con il portale di Azure.Follow the instructions at Get started with Azure Data Lake Store using the Azure portal.
  • Maven.Maven. Questa esercitazione usa Maven per compilare e progettare le dipendenze.This tutorial uses Maven for build and project dependencies. Sebbene sia possibile compilare senza ricorrere a un sistema di compilazione come Maven o Gradle, questi sistemi semplificano la gestione delle dipendenze.Although it is possible to build without using a build system like Maven or Gradle, these systems make is much easier to manage dependencies.
  • (Facoltativo) E IDE come IntelliJ IDEA oppure Eclipse o simili.(Optional) And IDE like IntelliJ IDEA or Eclipse or similar.

Creare un'applicazione JavaCreate a Java application

Il codice di esempio disponibile in GitHub offre una descrizione dei processi di creazione dei file nell'archivio, concatenazione dei file, download di un file ed eliminazione di alcuni file nell'archivio.The code sample available on GitHub walks you through the process of creating files in the store, concatenating files, downloading a file, and deleting some files in the store. Questa sezione dell'articolo descrive in modo dettagliato le parti principali del codice.This section of the article walks you through the main parts of the code.

  1. Creare un progetto Maven usando l'archetipo mvn dalla riga di comando o con un IDE.Create a Maven project using mvn archetype from the command line or using an IDE. Per istruzioni su come creare un progetto Java usando IntelliJ, vedere qui.For instructions on how to create a Java project using IntelliJ, see here. Per istruzioni su come creare un progetto Java usando Eclipse, vedere qui.For instructions on how to create a project using Eclipse, see here.

  2. Aggiungere le dipendenze seguenti al file pom.xml di Maven.Add the following dependencies to your Maven pom.xml file. Aggiungere il frammento di codice seguente prima del tag </project>:Add the following snippet before the </project> tag:

     <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 prima dipendenza serve a usare l'SDK di Data Lake Store (azure-data-lake-store-sdk) dal repository di Maven.The first dependency is to use the Data Lake Store SDK (azure-data-lake-store-sdk) from the maven repository. La seconda dipendenza serve a specificare il framework di registrazione (slf4j-nop) da usare per questa applicazione.The second dependency is to specify the logging framework (slf4j-nop) to use for this application. L'SDK di Data Lake Store usa la façade di registrazione SLF4J, che consente di scegliere tra un numero di framework di registrazione comuni, come SLF4J, registrazione Java, logback e così via, o nessuna registrazione.The Data Lake Store SDK uses slf4j logging façade, which lets you choose from a number of popular logging frameworks, like log4j, Java logging, logback, etc., or no logging. Per questo esempio la registrazione viene disabilitata, quindi si usa il binding slf4j-nop.For this example, we disable logging, hence we use the slf4j-nop binding. Per usare altre opzioni di registrazione nell'applicazione, vedere qui.To use other logging options in your app, see here.

  3. Aggiungere le istruzioni import seguenti all'applicazione.Add the following import statements to your 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;
    

AutenticazioneAuthentication

Creare un client Azure Data Lake StoreCreate an Azure Data Lake Store client

Per la creazione di un oggetto ADLStoreClient, è necessario specificare il nome dell'account Data Lake Store e il provider di token generato quando è stata eseguita l'autenticazione con Data Lake Store (vedere la sezione Autenticazione).Creating an ADLStoreClient object requires you to specify the Data Lake Store account name and the token provider you generated when you authenticated with Data Lake Store (see Authentication section). Il nome dell'account Data Lake Store deve essere un nome di dominio completo.The Data Lake Store account name needs to be a fully qualified domain name. Ad esempio, sostituire COMPLETARE QUI con qualcosa simile a mydatalakestore.azuredatalakestore.net.For example, replace FILL-IN-HERE with something like mydatalakestore.azuredatalakestore.net.

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

I frammenti di codice nelle sezioni seguenti contengono esempi di alcune operazioni comuni del file system.The code snippets in the following sections contain examples of some common filesystem operations. È possibile esaminare tutta la documentazione API relativa all'SDK Java di Data Lake Store dell'oggetto ADLStoreClient per vedere altre operazioni.You can look at the full Data Lake Store Java SDK API docs of the ADLStoreClient object to see other operations.

Creare una directoryCreate a directory

Il frammento di codice seguente crea una struttura di directory nella radice dell'account Data Lake Store specificato.The following snippet creates a directory structure in the root of the Data Lake Store account you specified.

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

Creare un fileCreate a file

Il frammento di codice seguente crea un file (c.txt) nella struttura di directory e scrive alcuni dati nel file.The following snippet creates a file (c.txt) in the directory structure and writes some data to the file.

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

È anche possibile creare un file (d.txt) usando matrici di byte.You can also create a file (d.txt) using byte arrays.

// 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 definizione per la funzione getSampleContent usata nel frammento di codice precedente è disponibile come parte dell'esempio su GitHub.The definition for getSampleContent function used in the preceding snippet is available as part of the sample on GitHub.

Aggiungere a un fileAppend to a file

Il frammento di codice seguente aggiunge contenuto a un file esistente.The following snippet appends content to an existing file.

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

La definizione per la funzione getSampleContent usata nel frammento di codice precedente è disponibile come parte dell'esempio su GitHub.The definition for getSampleContent function used in the preceding snippet is available as part of the sample on GitHub.

Leggere un fileRead a file

Il frammento di codice seguente legge il contenuto di un file nell'account Data Lake Store.The following snippet reads content from a file in Data Lake Store account.

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

Concatenare fileConcatenate files

Il frammento di codice seguente concatena due file nell'account Data Lake Store.The following snippet concatenates two files in the Data Lake Store account. Se l'operazione ha esito positivo, il file concatenato sostituisce i due file esistenti.If successful, the concatenated file replaces the two existing files.

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

Rinominare un fileRename a file

Il frammento di codice seguente rinomina un file nell'account Data Lake Store.The following snippet renames a file in Data Lake Store account.

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

Ottenere i metadati per un fileGet metadata for a file

Il frammento di codice seguente recupera i metadati per un file nell'account Data Lake Store.The following snippet retrieves the metadata for a file in Data Lake Store account.

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

Impostare le autorizzazioni in un fileSet permissions on a file

Il frammento di codice seguente imposta le autorizzazioni nel file creato nella sezione precedente.The following snippet sets permissions on the file that you created in the previous section.

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

Elencare il contenuto della directoryList directory contents

Il frammento di codice seguente elenca il contenuto di una directory, in modo ricorsivo.The following snippet lists the contents of a directory, recursively.

// 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 definizione per la funzione printDirectoryInfo usata nel frammento di codice precedente è disponibile come parte dell'esempio su GitHub.The definition for printDirectoryInfo function used in the preceding snippet is available as part of the sample on GitHub.

Eliminare file e cartelleDelete files and folders

Il frammento di codice seguente elimina le cartelle e i file specificati in un account Data Lake Store, in modo ricorsivo.The following snippet deletes the specified files and folders in a Data Lake Store account, recursively.

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

Compilare ed eseguire l'applicazioneBuild and run the application

  1. Per eseguirla da un IDE, individuare l'applicazione e premere il pulsante Esegui.To run from within an IDE, locate and press the Run button. Per eseguirla da Maven, usare exec:exec.To run from Maven, use exec:exec.
  2. Per produrre un file jar autonomo eseguibile dalla riga di comando, compilare il file jar con tutte le dipendenze incluse usando il plug-in dell'assembly Maven.To produce a standalone jar that you can run from command-line build the jar with all dependencies included, using the Maven assembly plugin. Il file pom.xml nell'esempio di codice sorgente su GitHub offre un esempio.The pom.xml in the example source code on github has an example.

Passaggi successiviNext steps