Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Important
Azure Data Lake Analytics a pris sa retraite le 29 février 2024. En savoir plus avec cette annonce.
Pour l’analytique des données, votre organisation peut utiliser Azure Synapse Analytics ou Microsoft Fabric.
Cet article explique comment gérer des comptes Azure Data Lake Analytics, des sources de données, des utilisateurs et des travaux à l’aide d’une application écrite à l’aide du Kit de développement logiciel (SDK) Java Azure.
Conditions préalables
- Kit de développement Java (JDK) 8 ( à l’aide de Java version 1.8).
- IntelliJ ou un autre environnement de développement Java approprié. Les instructions de ce document utilisent IntelliJ.
- Créez une application Microsoft Entra et récupérez son ID client, son ID de locataire et sa clé. Pour plus d’informations sur les applications Microsoft Entra et des instructions sur l’obtention d’un ID client, consultez Créer une application Active Directory et un principal de service à l’aide du portail. L’URI de réponse et la clé sont disponibles à partir du portail une fois l’application créée et la clé générées.
Authentification à l’aide de l’ID Microsoft Entra
L’extrait de code suivant fournit du code pour l’authentification non interactive , où l’application fournit ses propres informations d’identification.
Création d’une application Java
- Ouvrez IntelliJ et créez un projet Java à l’aide du modèle d’applicationCommand-Line .
- Cliquez avec le bouton droit sur le projet sur le côté gauche de votre écran, puis sélectionnez Ajouter une prise en charge du framework. Choisissez Maven et sélectionnez OK.
- Ouvrez le fichier «pom.xml» nouvellement créé et ajoutez l’extrait de texte suivant entre la <balise /version> et la <balise /project> :
<dependencies>
<dependency>
<groupId>com.azure.resourcemanager</groupId>
<artifactId>azure-resourcemanager-datalakeanalytics</artifactId>
<version>1.0.0-beta.1</version>
</dependency>
<dependency>
<groupId>com.azure.resourcemanager</groupId>
<artifactId>azure-resourcemanager-datalakestore</artifactId>
<version>1.0.0-beta.1</version>
</dependency>
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-storage-file-datalake</artifactId>
<version>12.7.2</version>
</dependency>
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-identity</artifactId>
<version>1.4.1</version>
</dependency>
</dependencies>
Accédez à Fichier > Paramètres > Build > Exécution > Déploiement. Sélectionnez Build Tools > Maven > Importing. Vérifiez ensuite Importer automatiquement des projets Maven.
Ouvrez et remplacez Main.java le bloc de code existant par le code suivant :
import com.azure.core.credential.TokenCredential;
import com.azure.core.management.AzureEnvironment;
import com.azure.core.management.profile.AzureProfile;
import com.azure.identity.ClientSecretCredential;
import com.azure.identity.ClientSecretCredentialBuilder;
import com.azure.resourcemanager.datalakeanalytics.DataLakeAnalyticsManager;
import com.azure.resourcemanager.datalakeanalytics.models.DataLakeAnalyticsAccount;
import com.azure.resourcemanager.datalakestore.DataLakeStoreManager;
import com.azure.resourcemanager.datalakestore.models.DataLakeStoreAccount;
import com.azure.storage.file.datalake.DataLakeFileClient;
import com.azure.storage.file.datalake.DataLakeFileSystemClient;
import com.azure.storage.file.datalake.DataLakeServiceClient;
import com.azure.storage.file.datalake.DataLakeServiceClientBuilder;
import com.azure.storage.file.datalake.models.PathAccessControl;
import com.azure.storage.file.datalake.models.PathPermissions;
import java.io.ByteArrayInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Collections;
import java.util.UUID;
public class Main {
private static String adlsAccountName;
private static String adlaAccountName;
private static String resourceGroupName;
private static String location;
private static String tenantId;
private static String subscriptionId;
private static String clientId;
private static String clientSecret;
private static String fileSystemName;
private static String localFolderPath;
private static DataLakeAnalyticsManager analyticsManager;
private static DataLakeStoreManager storeManager;
private static DataLakeStoreAccount storeAccount;
private static DataLakeAnalyticsAccount analyticsAccount;
private static DataLakeServiceClient serviceClient;
private static DataLakeFileSystemClient fileSystemClient;
private static DataLakeFileClient fileClient;
public static void main(String[] args) throws Exception {
adlsAccountName = "<DATA-LAKE-STORE-NAME>";
adlaAccountName = "<DATA-LAKE-ANALYTICS-NAME>";
resourceGroupName = "<RESOURCE-GROUP-NAME>";
location = "East US 2";
tenantId = "<TENANT-ID>";
subscriptionId = "<SUBSCRIPTION-ID>";
clientId = "<CLIENT-ID>";
clientSecret = "<CLIENT-SECRET>";
fileSystemName = "<DATALAKE-FILE-SYSTEM-NAME>";
localFolderPath = "C:\\local_path\\";
// ----------------------------------------
// Authenticate
// ----------------------------------------
AzureProfile profile = new AzureProfile(AzureEnvironment.AZURE);
ClientSecretCredential creds = new ClientSecretCredentialBuilder()
.clientId(clientId).tenantId(tenantId).clientSecret(clientSecret)
.authorityHost("https://login.microsoftonline.com/" + tenantId + "/oauth2/token")
.build();
setupClients(creds, profile);
// ----------------------------------------
// List Data Lake Store and Analytics accounts that this app can access
// ----------------------------------------
System.out.println(String.format("All ADL Store accounts that this app can access in subscription %s:", subscriptionId));
storeManager.accounts().list().forEach(acct -> System.out.println(acct.name()));
System.out.println(String.format("All ADL Analytics accounts that this app can access in subscription %s:", subscriptionId));
analyticsManager.accounts().list().forEach(acct -> System.out.println(acct.name()));
waitForNewline("Accounts displayed.", "Creating files.");
// ----------------------------------------
// Create a file in Data Lake Store: input1.csv
// ----------------------------------------
createFile("input1.csv", "123,abc", true);
waitForNewline("File created.", "Submitting a job.");
// ----------------------------------------
// Submit a job to Data Lake Analytics
// ----------------------------------------
String script = "@input = EXTRACT Row1 string, Row2 string FROM \"/input1.csv\" USING Extractors.Csv(); OUTPUT @input TO @\"/output1.csv\" USING Outputters.Csv();";
UUID jobId = submitJobByScript(script, "testJob", creds);
waitForNewline("Job submitted.", "Getting job status.");
// ----------------------------------------
// Download job output from Data Lake Store
// ----------------------------------------
downloadFile("output1.csv", localFolderPath + "output1.csv");
waitForNewline("Job output downloaded.", "Deleting file.");
deleteFile("output1.csv");
waitForNewline("File deleted.", "Done.");
}
public static void setupClients(TokenCredential creds, AzureProfile profile) {
analyticsManager = DataLakeAnalyticsManager.authenticate(creds, profile);
storeManager = DataLakeStoreManager.authenticate(creds, profile);
createAccounts();
serviceClient = new DataLakeServiceClientBuilder().endpoint(storeAccount.endpoint()).credential(creds).buildClient();
fileSystemClient = serviceClient.createFileSystem(fileSystemName);
}
public static void waitForNewline(String reason, String nextAction) {
if (nextAction == null)
nextAction = "";
System.out.println(reason + "\r\nPress ENTER to continue...");
try {
System.in.read();
} catch (Exception e) {
}
if (!nextAction.isEmpty()) {
System.out.println(nextAction);
}
}
// Create accounts
public static void createAccounts() {
// Create ADLS account
storeAccount = storeManager.accounts().define(adlsAccountName)
.withRegion(location)
.withExistingResourceGroup(resourceGroupName)
.create();
analyticsAccount = analyticsManager.accounts().define(adlaAccountName)
.withRegion(location).withExistingResourceGroup(resourceGroupName)
.withDefaultDataLakeStoreAccount(adlsAccountName)
.withDataLakeStoreAccounts(Collections.EMPTY_LIST)
.create();
}
// Create a file
public static void createFile(String path, String contents, boolean force) {
byte[] bytesContents = contents.getBytes();
DataLakeFileClient fileClient = fileSystemClient.createFile(path,force);
PathAccessControl accessControl = fileClient.getAccessControl();
fileClient.setPermissions(PathPermissions.parseOctal("744"), accessControl.getGroup(), accessControl.getOwner());
fileClient.upload(new ByteArrayInputStream(bytesContents), bytesContents.length);
}
// Delete a file
public static void deleteFile(String filePath) {
fileSystemClient.getFileClient(filePath).delete();
}
// Download a file
private static void downloadFile(String srcPath, String destPath) throws IOException {
fileClient = fileSystemClient.getFileClient(srcPath);
OutputStream outputStream = new FileOutputStream(destPath);
fileClient.read(outputStream);
outputStream.close();
}
}
Fournissez les valeurs des paramètres appelés dans l’extrait de code :
adlsAccountNameadlaAccountNameresourceGroupNamelocationtenantIdsubscriptionIdclientIdclientSecretfileSystemNamelocalFolderPath
Étapes suivantes
- Pour découvrir U-SQL, consultez Prise en main du langage U-SQL Azure Data Lake Analytics et la référence du langage U-SQL.
- Pour les tâches de gestion, consultez Gérer Azure Data Lake Analytics à l’aide du portail Azure.
- Pour obtenir une vue d’ensemble de Data Lake Analytics, consultez la vue d’ensemble d’Azure Data Lake Analytics.