J'utilise le bloc-notes Azure DataBricks avec la bibliothèque Azure pour obtenir la liste des fichiers dans le stockage Blob. Cette tâche est planifiée et le cluster est arrêté une fois le travail terminé et redémarré avec une nouvelle exécution.
J'utilise la bibliothèque Azure 4.0.0 ( https://pypi.org/project/azure/ )
Parfois, je reçois un message d'erreur:
et très rarement aussi:
J'ai trouvé une solution en désinstallant openssl ou azure library, redémarrez le cluster et réinstallez-le, mais le redémarrage du cluster peut ne pas être possible car il peut avoir besoin de gérer des tâches plus longues, etc.
J'ai également essayé d'installer / mettre à niveau openSSL 16.2.0 dans le script d'initialisation, mais cela n'aide pas et commence à entrer en conflit avec une autre bibliothèque openSSL qui est dans le cluster Databricks par défaut
Y a-t-il une option que je peux faire avec?
Il y a le code pour obtenir la liste des fichiers de Blob Storage:
import pandas as pd import re import os from pyspark.sql.types import * import azure from azure.storage.blob import BlockBlobService import datetime import time r = [] marker = None blobService = BlockBlobService(accountName,accountKey) while True: result = blobService.list_blobs(sourceStorageContainer, prefix = inputFolder, marker=marker) for b in result.items: r.append(b.name) if result.next_marker: marker = result.next_marker else: break print(r)
Merci
3 Réponses :
La solution à ce problème consiste à rétrograder la bibliothèque Azure vers 3.0.0.
Il semble qu'Azure v4 soit en conflit avec certaines bibliothèques initiales dans Databricks.
Ce problème a également un lien avec le package pyOpenSSL. Le passage à la version 18.0.0 a fait l'affaire pour moi. J'ai utilisé le script ci-dessous comme script d'initialisation lors de l'initialisation du cluster
dbutils.fs.put("/databricks/script/pyOpenSSL-install.sh",""" #!/bin/bash /databricks/python/bin/pip uninstall pyOpenSSL -y /databricks/python/bin/pip install pyOpenSSL==18.0.0 """, True)
Cela a résolu mon problème. Cependant, au lieu de rétrograder, je l'ai mis à niveau vers la version 19.0.0. Et le package qui a un problème ( azure-storage-blob
était 12.2.0). Voici comment je l'ai fait: kb.databricks.com/python/...
L'exécution de databricks runtime 6 ou supérieur devrait maintenant résoudre ce problème.
Veuillez publier une réponse sur votre solution ou les étapes à suivre pour résoudre votre problème, cela aidera d'autres personnes qui ont rencontré un problème similaire. Merci.