Se avete bisogno di interagire con i vostri progetti watsonx.ai Studio e le risorse del progetto da un notebook, potete usare la libreria 'project-lib
per Python. La biblioteca è come un'interfaccia programmaticale ad un progetto.
Utilizzando la libreria project-lib
per Pythonè possibile accedere ai metadati del progetto e agli asset, inclusi i file e le connessioni. La libreria contiene anche funzioni che semplificano i file di recupero associati al progetto.
- Le funzioni project-lib
non codificano o decodificano i dati durante il salvataggio o l'acquisizione di dati da un file.
- Le funzioni project-lib
non possono essere utilizzate per accedere agli asset della cartella connessi (file su un percorso in Cloud Object Storage).
Utilizza la libreria
La libreria project-lib
per Python è preinstallata e può essere importata direttamente in un notebook nell'editor del notebook. Per utilizzare la libreria project-lib
nel notebook è necessario l'ID del progetto e il token del progetto.
Per inserire il token del progetto sul tuo notebook:
Fare clic sull'icona Più sulla barra degli strumenti del notebook e quindi fare clic su Inserisci token del progetto.
Se esiste un token del progetto, una cella viene aggiunta al tuo notebook con le seguenti informazioni:
from project_lib import Project project = Project(sc,"<ProjectId>","<ProjectToken>")
sc
è il contesto Spark se si utilizza Spark.<ProjectId>
è l'ID del tuo progetto e<ProjectToken>
è il valore del token del progetto.Se ci si dice in un messaggio che non esiste alcun token di progetto, clicca sul link nel messaggio da reindirizzato alla pagina Controllo accessi del progetto in cui è possibile creare un token di progetto. È necessario essere idonei a creare un token di progetto. Per i dettagli, consultare Manualmente aggiungendo il token del progetto.
Per creare un token di progetto:
- Dalla scheda Gestisci , selezionare la pagina Controllo accessi e fare clic su Nuovo token di accesso sotto token di accesso.
- Inserire un nome, selezionare Editor ruolo per il progetto e creare un token.
- Torna sul tuo notebook, clicca sull'icona Più sulla barra degli strumenti del notebook e clicca quindi su Inserisci token progetto.
Le funzioni project-lib
L'oggetto di progetto instanziato che viene creato dopo aver importato la libreria project-lib
espone una serie di funzioni raggruppate nel seguente modo:
- Caricamento informazioni progetto
- File di recupero
- Salva dati
- Dati di lettura da una connessione
- Caricamento dei dati connessi
Informazioni sul progetto di recupero
È possibile utilizzare le seguenti funzioni per recuperare programmaticamente le informazioni relative al progetto:
get_name()
Questa funzione restituisce il nome del progetto.
get_description()
Questa funzione restituisce la descrizione del progetto.
get_metadata()
Questa funzione restituisce i metadati del progetto.
get_storage_metadata()
Questa funzione restituisce i metadati della memoria oggetto associata al progetto.
get_project_bucket_name()
Questa funzione restituisce il nome del bucket del progetto nell'archivio oggetti associato. Tutti i file di progetto sono memorizzati in questo secchio.
get_files()
Questa funzione restituisce l'elenco dei file nel tuo progetto. Ogni elemento nella lista restituita contiene l'ID e il nome del file. L'elenco dei file restituiti non è ordinato da alcun criterio e può cambiare quando si richiama nuovamente la funzione.
get_assets()
Questa funzione restituisce un elenco di tutti gli asset del progetto. È possibile passare il parametro opzionale
asset_type
alla funzioneget_assets
che consente di filtrare gli asset per tipo. I valori accettati per questo parametro sonodata_asset
,connection
easset
. Il valoreasset
restituisce tutti gli asset nel tuo progetto. Ad esempio, per ottenere solo gli asset dati, utilizzare la funzioneget_assets("data_asset")
.get_connections()
Questa funzione restituisce un elenco delle connessioni che hai nel tuo progetto. Ogni elemento nella lista restituita contiene l'ID e il nome della connessione.
Recupera file
È possibile utilizzare le seguenti funzioni per recuperare i file memorizzati nella memoria oggetto associata al proprio progetto.
È possibile richiamare i file in due modi:
get_file_url(file_name)
dovefile_name
è il nome del file che si desidera recuperare.Questa funzione restituisce l'URL per recuperare un file dalla memoria oggetto utilizzando Spark. L'URL è costruito in base al tipo di storage oggetto associato al progetto. Le configurazioni Hadoop vengono impostate automaticamente quando si interagisce con l'archiviazione oggetto del proprio progetto.
Il seguente esempio mostra come utilizzare questa funzione per richiamare i dati dalla memoria oggetto utilizzando Spark:
# Import the lib from project_lib import Project project = Project(sc,"<ProjectId>", "<ProjectToken>") # Get the url url = project.get_file_url("myFile.csv") # Fetch the CSV file from the object storage using Spark from pyspark.sql import SparkSession spark = SparkSession.builder.getOrCreate() df_data_1 = spark.read\ .format('org.apache.spark.sql.execution.datasources.csv.CSVFileFormat')\ .option('header', 'true')\ .load(url) df_data_1.show(5)
get_file(file_name)
dovefile_name
è il nome del file che si desidera recuperare.Questa funzione richiama un file dalla memoria dell'oggetto nella memoria del kernel in esecuzione. La funzione restituisce un buffer di byte che può essere utilizzato per eseguire il bind in strutture di dati specifiche del kernel, ad esempio, un panda DataFrame. Questo metodo di caricamento dei file non è consigliato per file molto grandi.
L'esempio seguente mostra come recuperare un file e leggere i dati in un DataFrame: di pandas:
# Import the lib from project_lib import Project project = Project(sc,"<ProjectId>", "<ProjectToken>") # Fetch the file my_file = project.get_file("myFile.csv") # Read the CSV data file from the object storage into a pandas DataFrame my_file.seek(0) import pandas as pd pd.read_csv(my_file, nrows=10)
Salva dati
È possibile utilizzare la seguente funzione per salvare i dati sulla memoria oggetto associata al proprio progetto. I dati verranno aggiunti come file al bucket del progetto nell'associato Cloud Object Storage. Questa funzione fa più cose. In primo luogo, mette i dati nella memoria dell'oggetto e poi aggiunge questi dati come asset di dati al tuo progetto in modo da poter vedere i dati che hai salvato come file nella lista degli asset di dati nel tuo progetto.
save_data(file_name, data, set_project_asset=True, overwrite=False)
La funzione assume i seguenti parametri:
file_name
: il nome del file creato.data
: i dati da caricare. Questo può essere qualsiasi oggetto di tipofile-like-object
, ad esempio buffer di byte o buffer di stringa.set_project_asset[optional]
: aggiunge il file al progetto come asset di dati dopo che i dati sono stati caricati correttamente sull'archivio oggetti. Ci vuole un valore booleano e il valore vero è impostato per impostazione predefinita.overwrite[optional]
: sovrascrive il file se il file esiste già nell'archivio oggetti o nel progetto. Per impostazione predefinita è impostato su false.
Di seguito un esempio, che mostra come è possibile salvare i dati in un file nell'archivio oggetti:
# Import the lib
from project_lib import Project
project = Project(sc,"<ProjectId>", "<ProjectToken>")
# let's assume you have the pandas DataFrame pandas_df which contains the data
# you want to save in your object storage as a csv file
project.save_data("file_name.csv", pandas_df.to_csv(index=False))
# the function returns a dict which contains the asset_id, bucket_name and file_name
# upon successful saving of the data
Leggi i dati da una connessione
È possibile utilizzare la seguente funzione per ottenere i metadati (credenziali) di una determinata connessione.
get_connection
: la funzione assume come input l'ID della connessione o il nome della connessione. È possibile ottenere questi valori utilizzando la funzione get_assets()
che restituisce id
, name
e type
di tutti gli asset elencati nel progetto.
La funzione get_connection
restituisce le credenziali di connessione che è possibile utilizzare per richiamare i dati dalla sorgente dati di connessione.
Di seguito un esempio, che mostra come è possibile recuperare le credenziali di una connessione utilizzando la funzione get_connection
:
# Import the lib
from project_lib import Project
project = Project(sc,"<ProjectId>", "<ProjectToken>")
conn_creds = project.get_connection(name="<ConnectionName>")
Se la tua connessione è una connessione a dashDB , ad esempio, puoi recuperare i tuoi dati eseguendo il seguente codice:
from pyspark.sql import SparkSession
spark = SparkSession.builder.getOrCreate()
host_url = "jdbc:db2://{}:{}/{}".format(conn_creds["host"], "50000", conn_creds["database"])
data_df = spark.read.jdbc(host_url, table="<TableName>", properties={"user": conn_creds["username"], "password": conn_creds["password"]})
data_df.show()
Recupero dati connessi
È possibile utilizzare la seguente funzione per richiamare le credenziali dei dati connessi. La funzione restituisce un dizionario che contiene le credenziali di connessione oltre a un attributo datapath
che fa riferimento a dati specifici in tale connessione, ad esempio, una tabella in un'istanza dashDB o un database in un'istanza Cloudant .
get_connected_data
: questa funzione assume come input l'ID dei dati connessi o il nome dei dati connessi. È possibile ottenere questi valori utilizzando la funzione get_assets()
che restituisce id
, name
e type
di tutti gli asset elencati nel progetto.
Di seguito viene riportato un esempio, che mostra come recuperare le credenziali dei dati connessi in una istanza di dashDB utilizzando la funzione get_connected_data
:
# Import the lib
from project_lib import Project
project = Project(sc,"<ProjectId>", "<ProjectToken>")
creds = project.get_connected_data(name="<ConnectedDataName>")
# creds is a dictionary that has the connection credentials in addition to
# a datapath that references a specific table in the database
# creds: {'database': 'DB_NAME',
# 'datapath': '/DASH11846/SAMPLE_TABLE',
# 'host': 'dashdb-entry-yp-dal09-07.services.dal.bluemix.net',
# 'password': 'XXXX',
# 'sg_service_url': 'https://sgmanager.ng.bluemix.net',
# 'username': 'XXXX'}
Ulteriori informazioni
Vedi una demo di queste funzioni in un post del blog.
Argomento principale: Lettura e accesso ai dati in un notebook