Azure / Azure/azure-storage-python

Unable to load serialized object persisted on Azure Blob storage

Ouverte
#678 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub
Langage dominant
Python
Étoiles
343
Forks
243
Métriques de merge des PR
Aucune PR mergée en 30 j

Description

We serialize the 'pipeline' object and store it on Azure Blob Storage.

```
with open("feg_pipeline.pkl", 'wb') as f:
dill.dump(pipeline, f, protocol=pickle.HIGHEST_PROTOCOL)
blob_service_client = BlobServiceClient.from_connection_string(conn_str=‘XXX’)
container_name = ‘YYY’
blob_service_client.create_container(container_name, public_access=PublicAccess.Container)
blob_client = blob_service_client.get_blob_client(
container=container_name, blob='feg_pipeline.pkl')
blob_client.upload_blob('feg_pipeline.pkl')
```

Later in a different function we read this from Blob storage as follows -
```

blob = BlobClient(account_url='https://fhghjhjh’,
container_name=‘YYY’,
blob_name='feg_pipeline.pkl’,
credential=‘XXX’)
feg_from_blob = None
with open("feg_pipeline.pkl”, "wb") as f:
data = blob.download_blob()
data.readinto(f)
with open("feg_pipeline.pkl”, "rb") as f:
feg_from_blob = dill.load(f)
```

For this we are getting

```
UnpicklingError: invalid load key, 'f'.

```
We have tried using -

Dill, Joblib, cPickle, CloudPickle and Pickle methods for serializing and deserializing, all of these gave keyerror while loading the object from the file downloaded from Blob.
Base64 encoding(while serializing) and decoding(while deserializing)..This gives a padding error while loading.

**What is the best way to persist and reuse such objects in Azure?**

Guide de contribution

Ouvrir le guide de contribution

Piste de recherche

Commencez par examiner les appels Azure BlobClient upload_blob et download_blob présentés dans l’issue, puis reproduisez le flux de sérialisation et de téléchargement avec l’exemple dill fourni. Comparez les octets écrits dans feg_pipeline.pkl avant et après l’aller-retour via Blob Storage et déterminez ce qui provoque l’UnpicklingError. La tâche est terminée lorsque le flux de persistance est compris et qu’une correction documentée et reproductible est disponible.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
azure, python
Domaine
cloud
Type d'issue
Bug
Difficulté
4/5
Temps estimé
3-5 jours
Activité
À l'abandon
Clarté
À clarifier
Accessibilité débutants
20/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.