Compartir a través de


Conexión a Amazon S3

En este artículo se explica cómo conectarse a AWS S3 desde Azure Databricks.

Acceso a cubos de S3 con URI y claves de AWS

Puedes establecer las propiedades de Spark para configurar unas claves de AWS para acceder a S3.

El equipo de Databricks recomienda que se usen ámbitos secretos para almacenar todas las credenciales. Puede otorgar a los usuarios, directores de servicio y grupos de su área de trabajo acceso para leer el ámbito secreto. Esto protege la clave de AWS a la vez que permite a los usuarios acceder a S3. Para crear un ámbito de secreto, consulte Administración de ámbitos secretos.

Las credenciales se pueden asignar a un clúster o a un cuaderno. Utilice tanto el control de acceso a clústeres como el control de acceso a portátiles para proteger el acceso a S3 Vea los Permisos de proceso y Colaborar mediante cuadernos de Databricks.

Para establecer las propiedades de Spark, utilice el siguiente fragmento en la configuración de Spark de un clúster para establecer las claves de AWS almacenadas en ámbitos secretos como variables de entorno:

AWS_SECRET_ACCESS_KEY={{secrets/scope/aws_secret_access_key}}
AWS_ACCESS_KEY_ID={{secrets/scope/aws_access_key_id}}

A continuación, puede leer desde S3 mediante los siguientes comandos:

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}/")

Acceder a S3 con opciones Hadoop de código abierto

Databricks Runtime permite configurar el sistema de archivos S3A mediante opciones Hadoop de código abierto. Puede configurar las propiedades globales y propiedades por cubo.

Configuración global

# 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

Configuración por cubo

Las propiedades por cubo se deben configurar mediante la sintaxis spark.hadoop.fs.s3a.bucket.<bucket-name>.<configuration-key>. Esto permite configurar cubos con diferentes credenciales, puntos de conexión, etc.

Por ejemplo, además de la configuración global de S3, puede configurar cada cubo individualmente mediante las claves siguientes:

# 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>

Uso de patrones en desuso para almacenar y acceder a datos desde Azure Databricks

A continuación se muestran patrones de almacenamiento en desuso:

Importante

  • El sistema de archivos S3A habilita el almacenamiento en caché de manera predeterminada y libera recursos en "FileSystem.close()". Para evitar que otros subprocesos usen una referencia al sistema de archivos almacenado en caché incorrectamente, no use explícitamente "FileSystem.close()".
  • El sistema de archivos S3A no quita los marcadores de directorio al cerrar un flujo de salida. Las aplicaciones heredadas basadas en versiones de Hadoop que no incluyen HADOOP-13230 pueden malinterpretarlas como directorios vacíos incluso si hay archivos dentro.