Acceso Azure Data Lake Storage Gen2 directamente mediante un proveedor de tokens sas

Puede usar firmas de acceso compartido (SAS) de almacenamiento para acceder directamente a Azure Data Lake Storage Gen2 cuenta de almacenamiento. Con SAS, puede restringir el acceso a una cuenta de almacenamiento mediante tokens temporales con control de acceso más preciso.

Puede agregar varias cuentas de almacenamiento y configurar los respectivos proveedores de tokens de SAS en la misma sesión de Spark.

Importante

La compatibilidad con SAS está disponible en Databricks Runtime 7.5 y posteriores. Se trata de una característica experimental para usuarios avanzados.

Implementación de un proveedor de tokens de SAS

Para usar SAS para acceder a Azure Data Lake Storage Gen2, debe proporcionar una implementación de Java o Scala de la interfaz, uno de los puntos de extensión SASTokenProvider que ofrece ABFS. Para más información sobre los puntos de extensión, consulte la sección Extensibilidad de la documentación de Hadoop en Azure.

La interfaz tiene los métodos siguientes:

package org.apache.hadoop.fs.azurebfs.extensions;

import java.io.IOException;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.security.AccessControlException;

public interface SASTokenProvider {
  /**
   * Initialize authorizer for Azure Blob File System.
   * @param configuration Configuration object.
   * @param accountName Account Name.
   * @throws IOException network problems or similar.
   */
  void initialize(Configuration configuration, String accountName)
      throws IOException;

  /**
   * Invokes the authorizer to obtain a SAS token.
   *
   * @param account the name of the storage account.
   * @param fileSystem the name of the fileSystem.
   * @param path the file or directory path.
   * @param operation the operation to be performed on the path.
   * @return a SAS token to perform the request operation.
   * @throws IOException if there is a network error.
   * @throws AccessControlException if access is denied.
   */
  String getSASToken(String account, String fileSystem, String path, String operation)
      throws IOException, AccessControlException;
}

Para obtener un ejemplo de implementación SASTokenProvider de la interfaz, vea la clase MockSASTokenProvider en el repositorio Apache Hadoop aplicación.

La clase que implementa la SASTokenProvider interfaz debe estar disponible en tiempo de ejecución. Para ello, proporcione directamente la implementación en un cuaderno como una celda de paquete o adjunte un archivo JAR que contenga la clase .

Configuración del proveedor de tokens de SAS

Puede registrar la implementación mediante las siguientes configuraciones de Spark:

spark.hadoop.fs.azure.account.auth.type.<storage-account-name>.dfs.core.windows.net SAS
spark.hadoop.fs.azure.sas.token.provider.type.<storage-account-name>.dfs.core.windows.net <class-name>

donde <class-name> es un nombre de clase completo de la SASTokenProvider implementación.

DataFrame o DataSet API

Si usa Spark DataFrame o las API de conjunto de datos, Databricks recomienda establecer la configuración de SAS en las configuraciones de sesión del cuaderno:

spark.conf.set("fs.azure.account.auth.type.<storage-account-name>.dfs.core.windows.net", "SAS")
spark.conf.set("fs.azure.sas.token.provider.type.<storage-account-name>.dfs.core.windows.net", "<class-name>")