Migration de project-lib pour Python vers ibm-watson-studio-lib
La bibliothèque ibm-watson-studio-lib est le successeur de project-lib library. Bien que vous puissiez continuer à utiliser l'API project-lib dans vos blocs-notes, elle est obsolète et vous devez envisager de migrer des blocs-notes existants pour utiliser la bibliothèque ibm-watson-studio-lib .
La bibliothèque project-lib est supprimée de l'exécution 25.1. Dans les versions plus anciennes, project-lib reste disponible.
L'utilisation de ibm-watson-studio-lib présente les avantages suivants:
- La bibliothèque
ibm-watson-studio-libpeut être utilisée dans des blocs-notes dans des projets et dans des blocs-notes qui ont été promus dans un espace de déploiement, sans qu'il soit nécessaire de modifier le code. Dansproject-lib, la portée est limitée aux projets uniquement. - L'API de navigation d'actifs fournit un accès en lecture seule à tous les types d'actifs, et pas seulement à ceux qui sont explicitement pris en charge par la bibliothèque.
ibm-watson-studio-libutilise une convention de dénomination d'API constistent qui structure les fonctions disponibles en fonction de leur zone d'application.
Les sections suivantes décrivent les modifications que vous devez apporter dans les blocs-notes Python existants pour commencer à utiliser la bibliothèque ibm-watson-studio-lib .
Configuration de la bibliothèque
Vous devez apporter les modifications suivantes dans les blocs-notes existants pour commencer à utiliser ibm-watson-studio-lib:
Dans le code utilisant project-lib , modifiez:
from project_lib import Project
project = Project()
# or:
project = Project.access()
Pour ce qui suit à l'aide de ibm-watson-studio-lib:
from ibm_watson_studio_lib import access_project_or_space
credentials_dic={"project_id":'<ProjectId>', "token":'<ProjectToken>'}
wslib = access_project_or_space(params=credentials_dic)
Utilisation de la bibliothèque
Les sections suivantes décrivent les modifications de code que vous devez apporter dans vos blocs-notes lors de la migration de fonctions dans project-lib vers les fonctions correspondantes dans ibm-watson-studio-lib.
- Obtenir des informations sur le projet
- Extraire les données
- Enregistrer les données
- Obtention des informations de connexion
- Obtenir des informations sur les données connectées
- Accéder à l'actif par ID et non par nom
- Extraire les actifs par type d'actif
- Accéder directement au stockage de projet
Obtenir des informations sur le projet
Pour extraire les informations associées au projet à l'aide d'un programme, vous devez modifier les fonctions suivantes:
Répertorier les connexions de données
Dans le code utilisant project-lib , modifiez:
project.get_connections()
Pour ce qui suit à l'aide de ibm-watson-studio-lib:
assets = wslib.list_connections()
wslib.show(assets)
Vous pouvez également, avec ibm-watson-studio-lib, répertorier les actifs de données connectés:
assets = wslib.list_connected_data()
wslib.show(assets)
Répertorier les fichiers de données
Cette fonction renvoie la liste des fichiers de données de votre projet.
Dans le code à l'aide de project-lib , changez à l'aide de:
project.get_files()
Pour ce qui suit à l'aide de ibm-watson-studio-lib:
assets = wslib.list_stored_data()
wslib.show(assets)
Obtenir un nom ou une description
Dans ibm-watson-studio-lib, vous pouvez extraire des métadonnées sur le projet, par exemple le nom d'un projet ou sa description, via le point d'entrée wslib.here.
Dans le code utilisant project-lib , modifiez:
name = project.get_name()
desc = project.get_description()
Pour ce qui suit à l'aide de ibm-watson-studio-lib:
name = wslib.here.get_name()
desc = wslib.here.get_description()
Récupérer les métadonnées
Il n'y a pas de remplacement pour get_matadata dans project-lib:
project.get_metadata()
La fonction wslib.here dans ibm-watson-studio-lib expose des parties de ces informations. Pour savoir quelles informations de métadonnées de projet sont disponibles, utilisez:
help(wslib.here.API)
Par exemple :
wslib.here.get_name(): Renvoie le nom du projetwslib.here.get_description(): Renvoie la description du proejctwslib.here.get_ID(): renvoie l'ID de projetwslib.here.get_storage(): renvoie les métadonnées de stockage
Obtenir les métadonnées de stockage
Dans le code utilisant project-lib , modifiez:
project.get_storage_metadata()
Pour ce qui suit à l'aide de ibm-watson-studio-lib:
wslib.here.get_storage()
Extraire les données
Pour accéder aux données d'un fichier, vous devez modifier les fonctions suivantes.
Dans le code utilisant project-lib , modifiez:
buffer = project.get_file("MyAssetName.csv")
# or, without direct storage access:
buffer = project.get_file("MyAssetName.csv", direct_storage=False)
# or:
buffer = project.get_file("MyAssetName.csv", direct_os_retrieval=False)
Pour ce qui suit à l'aide de ibm-watson-studio-lib:
buffer = wslib.load_data("MyAssetName.csv")
De plus, ibm-watson-studio-lib offre une fonction permettant de télécharger une ressource de données et de la stocker dans le système de fichiers local:
info = wslib.download_file("MyAssetName.csv", "MyLocalFile.csv")
Enregistrer les données
Pour sauvegarder des données dans un fichier, vous devez modifier les fonctions suivantes.
Dans le code utilisant project-lib change (et pour toutes les variantes de direct_store=False et set_project_asset=True):
project.save_data("NewAssetName.csv", data)
project.save_data("MyAssetName.csv", data, overwrite=True)
Pour ce qui suit à l'aide de ibm-watson-studio-lib:
asset = wslib.save_data("NewAssetName.csv", data)
wslib.show(asset)
asset = wslib.save_data("MyAssetName.csv", data, overwrite=True)
wslib.show(asset)
En outre, ibm-watson-studio-lib offre une fonction permettant de télécharger un fichier local dans l'espace de stockage et de créer un actif de données :
asset = wslib.upload_file("MyLocalFile.csv", "MyAssetName.csv")
wslib.show(asset)
Obtenir les informations de connexion
Pour renvoyer les métadonnées associées à une connexion, vous devez modifier les fonctions suivantes.
Dans le code utilisant project-lib , modifiez:
connprops = project.get_connection(name="MyConnection")
Pour ce qui suit à l'aide de ibm-watson-studio-lib:
connprops = wslib.get_connection("MyConnection")
Obtenir des informations sur les données connectées
Pour renvoyer les métadonnées associées à un actif de données connecté, vous devez modifier les fonctions suivantes.
Dans le code utilisant project-lib , modifiez:
dataprops = project.get_connected_data(name="MyConnectedData")
Pour ce qui suit à l'aide de ibm-watson-studio-lib:
dataprops = wslib.get_connected_data("MyConnectedData")
Accéder à l'actif par ID à la place du nom
Vous pouvez renvoyer les métadonnées d'une connexion ou d'un actif de données connecté en accédant à l'actif par ID plutôt que par nom.
Dans project-lib , modifiez:
connprops = project.get_connection(id="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx")
# or:
connprops = project.get_connection("xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx")
# or:
datapros = project.get_connected_data(id="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx")
# or:
datapros = project.get_connected_data("xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx")
Pour ce qui suit à l'aide de ibm-watson-studio-lib:
connprops = wslib.by_id.get_connection("xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx")
dataprops = wslib.by_id.get_connected_data("xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx")
Dans project-lib, il n'est pas possible d'accéder aux fichiers (actifs de données stockés) par ID. Vous ne pouvez le faire que par nom. La bibliothèque ibm-watson-studio-lib prend en charge l'accès aux fichiers par ID. Voir Utilisation d'ibm-watson-studio-lib.
Extraire les actifs par type d'actif
Lorsque vous extrayez la liste de tous les actifs de projet, vous pouvez transmettre le paramètre facultatif asset_type à la fonction get_assets qui vous permet de filtrer les actifs par type. Les valeurs acceptées pour ce paramètre dans project-lib sont data_asset, connection et asset.
Dans le code utilisant project-lib , modifiez:
project.get_assets()
# Or, for a supported asset type:
project.get_assets("<asset_type>")
# Or:
project.get_assets(asset_type="<asset_type>")
Pour ce qui suit à l'aide de ibm-watson-studio-lib:
assets = wslib.assets.list_assets("asset")
wslib.show(assets)
# Or, for a specific asset type:
assets = wslib.assets.list_assets("<asset_type>")
# Example, list all notebooks:
notebook_assets = wslib.assets.list_assets("notebook")
wslib.show(notebook_assets)
Pour répertorier les types d'actif disponibles, utilisez:
assettypes = wslib.assets.list_asset_types()
wslib.show(assettypes)
Prise En Charge Spark
Pour travailler avec Spark, vous devez modifier les fonctions qui permettent la prise en charge de Spark et la récupération de URL dans un fichier.
Configuration de la prise en charge de Spark
Pour configurer la prise en charge de Spark:
Dans le code utilisant project-lib , modifiez:
# Provide SparkContext during setup
from project_lib import Project
project = Project(sc,"<ProjectId>","<ProjectToken>")
Pour ce qui suit à l'aide de ibm-watson-studio-lib:
from ibm_watson_studio_lib import access_project_or_space
wslib = access_project_or_space({'token':'<ProjectToken>'}
# provide SparkContext in a subsequent step
wslib.spark.provide_spark_context(sc)
Récupérer URL pour accéder à un fichier depuis Spark
Pour récupérer un URL pour accéder à un fichier référencé par un asset depuis Spark via Hadoop :
Dans le code utilisant project-lib , modifiez:
url = project.get_file_url("MyAssetName.csv")
# or
url = project.get_file_url("MyAssetName.csv", direct_storage=False)
# or
url = project.get_file_url("MyAssetName.csv", direct_os_retrieval=False)
Pour ce qui suit à l'aide de ibm-watson-studio-lib:
url = wslib.spark.get_data_url("MyAssetName.csv")
Obtenir le fichier URL pour l'utiliser avec Spark
Récupérer un URL pour accéder à un fichier référencé par un asset depuis Spark via Hadoop.
Dans le code utilisant project-lib , modifiez:
project.get_file_url("MyFileName.csv", direct_storage=True)
# or
project.get_file_url("MyFileName.csv", direct_os_retrieval=True)
Pour ce qui suit à l'aide de ibm-watson-studio-lib:
wslib.spark.storage.get_data_url("MyFileName.csv")
Accéder directement au stockage de projet
Vous pouvez extraire des données du stockage de projet ou sauvegarder des données dans le stockage de projet sans synchroniser les actifs de projet.
Extraire les données
Pour extraire des données du stockage de projet:
Dans le code utilisant project-lib , modifiez:
project.get_file("MyFileName.csv", direct_storage=True)
# Or:
project.get_file("MyFileName.csv", direct_os_retrieval=True)
Pour ce qui suit à l'aide de ibm-watson-studio-lib:
wslib.storage.fetch_data("MyFileName.csv")
Enregistrer les données
Pour sauvegarder des données dans un fichier du stockage de projet:
Dans le code utilisant project-lib , modifiez:
# Save and do not create an asset in a project
project.save_data("NewFileName.csv", data, direct_storage=True)
# Or:
project.save_data("NewFileName.csv", data, set_project_asset=False)
Pour ce qui suit à l'aide de ibm-watson-studio-lib:
wslib.storage.store_data("NewFileName.csv", data)
Dans le code utilisant project-lib , modifiez:
# Save (and overwrite if file exists) and do not create an asset in the project
project.save_data("MyFileName.csv", data, direct_storage=True, overwrite=True)
# Or:
project.save_data("MyFileName.csv", data, set_project_asset=False, overwrite=True)
Pour ce qui suit à l'aide de ibm-watson-studio-lib:
wslib.storage.store_data("MyFileName.csv", data, overwrite=True)
En outre, ibm-watson-studio-lib propose une fonction permettant de télécharger un fichier de l'espace de travail vers le système de fichiers local :
wslib.storage.download_file("MyStorageFile.csv", "MyLocalFile.csv")
Vous pouvez également enregistrer un fichier dans le stockage de l'espace de travail en tant qu'actif de données à l'aide de la commande
wslib.storage.register_asset("MyStorageFile.csv", "MyAssetName.csv")
En savoir plus
Pour utiliser la bibliothèque ibm-watson-studio-lib pour Python dans des blocs-notes, voir ibm-watson-studio-lib for Python.