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.
Cet article explique comment se connecter à Amazon S3 (S3) à partir d’Azure Databricks.
Accéder aux compartiments S3 avec des URI et des clés AWS
Vous pouvez définir des propriétés Spark pour configurer des clés AWS pour accéder à S3.
Databricks recommande d’utiliser des étendues de secret pour stocker toutes les informations d’identification. Vous pouvez accorder aux utilisateurs, aux principaux de service et aux groupes de votre espace de travail un accès pour lire l’étendue du secret. Cela protège la clé AWS tout en permettant aux utilisateurs d’accéder à S3. Pour créer une étendue de secret, consultez Gérer les étendues de secrets.
Les informations d’identification peuvent être étendues à un cluster ou à un notebook. Utilisez à la fois le contrôle d’accès au cluster et le contrôle d’accès aux notebooks pour protéger l’accès à S3. Consultez Autorisations de calcul et Collaborer à l’aide de notebooks Databricks.
Pour définir les propriétés Spark, utilisez l’extrait de code suivant dans la configuration Spark d’un cluster pour définir les clés AWS stockées dans des étendues secrètes en tant que variables d’environnement :
AWS_SECRET_ACCESS_KEY={{secrets/scope/aws_secret_access_key}}
AWS_ACCESS_KEY_ID={{secrets/scope/aws_access_key_id}}
Vous pouvez ensuite lire à partir de S3 à l’aide des commandes suivantes :
aws_bucket_name = "my-s3-bucket"
df = spark.read.load(f"s3a://{aws_bucket_name}/flowers/delta/")
display(df)
dbutils.fs.ls(f"s3a://{aws_bucket_name}/")
Accéder à S3 avec les options Hadoop open source
Databricks Runtime prend en charge la configuration du système de fichiers S3A à l’aide des options Hadoop open source. Vous pouvez configurer les propriétés globales et les propriétés par compartiment.
Configuration globale
# Global S3 configuration
spark.hadoop.fs.s3a.aws.credentials.provider <aws-credentials-provider-class>
spark.hadoop.fs.s3a.endpoint <aws-endpoint>
spark.hadoop.fs.s3a.server-side-encryption-algorithm SSE-KMS
Configuration par compartiment
Vous configurez les propriétés par compartiment à l’aide de la syntaxe spark.hadoop.fs.s3a.bucket.<bucket-name>.<configuration-key>. Cela vous permet de configurer des compartiments avec différentes informations d’identification, points de terminaison, et ainsi de suite.
Par exemple, en plus des paramètres S3 globaux, vous pouvez configurer chaque compartiment individuellement à l’aide des clés suivantes :
# Set up authentication and endpoint for a specific bucket
spark.hadoop.fs.s3a.bucket.<bucket-name>.aws.credentials.provider <aws-credentials-provider-class>
spark.hadoop.fs.s3a.bucket.<bucket-name>.endpoint <aws-endpoint>
# Configure a different KMS encryption key for a specific bucket
spark.hadoop.fs.s3a.bucket.<bucket-name>.server-side-encryption.key <aws-kms-encryption-key>
Modèles déconseillés pour le stockage des données et l’accès à celles-ci à partir d’Azure Databricks
Modèles de stockage déconseillés :
- Databricks ne recommande plus de monter des emplacements de données externes dans le système de fichiers Databricks. Consultez Montage de stockage d’objets cloud sur Azure Databricks.
Important
- Le système de fichiers S3A active la mise en cache par défaut et libère les ressources sur « FileSystem.close() ». Pour éviter que d’autres threads utilisent une référence au système de fichiers mis en cache de manière incorrecte, n’utilisez pas explicitement le fichier FileSystem.close().
- Le système de fichiers S3A ne supprime pas les marqueurs de répertoire lors de la fermeture d’un flux de sortie. Les applications héritées basées sur les versions Hadoop qui n’incluent pas HADOOP-13230 peuvent mal les interpréter comme des répertoires vides même s’il y a des fichiers à l’intérieur.