Skip to content

Instantly share code, notes, and snippets.

@danielfsilva88
Last active May 15, 2024 21:35
Show Gist options
  • Save danielfsilva88/3999d05b14ba6ebb8de61c17d422a680 to your computer and use it in GitHub Desktop.
Save danielfsilva88/3999d05b14ba6ebb8de61c17d422a680 to your computer and use it in GitHub Desktop.
Databricks mount to external storage

Article:

storageAccountName = "<storage-account-name>"
storageAccountAccessKey = "<access-key>"
sasToken = "<sas-token>"
blobContainerName = "<blob-container-name>"
mountPoint = "<mount-point-path>"

if any(mount.mountPoint == mountPoint for mount in dbutils.fs.mounts()):
  dbutils.fs.unmount(mountPoint)

try:
  dbutils.fs.mount(
    source = f"wasbs://{blobContainerName}@{storageAccountName}.blob.core.windows.net",
    mount_point = mountPoint,
    # using access keys: extra_configs = {'fs.azure.account.key.' + storageAccountName + '.blob.core.windows.net': storageAccountAccessKey}
    # using sas tokens: extra_configs = {'fs.azure.sas.' + blobContainerName + '.' + storageAccountName + '.blob.core.windows.net': sasToken}
  )
  print("mount succeeded!")
except Exception as e:
  print("mount exception", e)
  • Unmount example: dbutils.fs.unmount(mountPoint)

  • List mounts: dbutils.fs.mounts()

  • One faced issue example: shaded.databricks.org.apache.hadoop.fs.azure.AzureException: java.lang.IllegalArgumentException: The String is not a valid Base64-encoded string.

    • Solution: add token into Azure Key Vault and access it using dbfs, like dbutils.secrets.get(scope = "<secret-scope>", key = "<key-vault-secret-name>")
  • Additional documentation: https://learn.microsoft.com/en-us/azure/databricks/connect/storage/azure-storage

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment