Wenn Sie mit Ihren watsonx.ai Studio-Projekten und Projekt-Assets von einem Notebook aus interagieren müssen, können Sie die ' project-lib
-Bibliothek für Python verwenden. Die Bibliothek ist wie eine programmgesteuerte Schnittstelle zu einem Projekt.
Mithilfe der Bibliothek project-lib
für Pythonkönnen Sie auf Projektmetadaten und -assets zugreifen, einschließlich Dateien und Verbindungen. Die Bibliothek enthält außerdem Funktionen, von denen das Abrufen von Dateien vereinfacht wird, die dem Projekt zugeordnet sind.
-Die project-lib
-Funktionen verschlüsseln oder decodieren keine Daten, wenn Daten in einer Datei gespeichert oder aus einer Datei abgerufen werden.
-Die project-lib
-Funktionen können nicht für den Zugriff auf verbundene Ordnerassets (Dateien in einem Pfad in Cloud Object Storage) verwendet werden.
Bibliothek verwenden
Die Bibliothek project-lib
für Python ist vorinstalliert und kann direkt in ein Notebook im Notebook-Editor importiert werden. Zur Verwendung der Bibliothek project-lib
in Ihrem Notebook benötigen Sie die ID des Projekts und das Projekttoken.
Gehen Sie wie folgt vor, um das Projekttoken in Ihr Notebook einzufügen:
Klicken Sie auf das Symbol Mehr in der Symbolleiste Ihres Notebooks und anschließend auf Projekttoken einfügen.
Wenn ein Projekttoken vorhanden ist, wird Ihrem Notebook eine Zelle mit den folgenden Informationen hinzugefügt:
from project_lib import Project project = Project(sc,"<ProjectId>","<ProjectToken>")
sc
gibt den Spark-Kontext an, sofern Spark verwendet wird.<ProjectId>
ist die ID Ihres Projekts und<ProjectToken>
ist der Wert des Projekttokens.Wenn eine Nachricht darauf hinweist, dass kein Projekttoken vorhanden ist, klicken Sie auf den Link in der Nachricht, um die Seite Zugriffssteuerung für das Projekt aufzurufen, auf der Sie ein Projekttoken erstellen können. Sie müssen die Berechtigung zum Erstellen eines Projekttokens haben. Details hierzu finden Sie in Projekttoken manuell hinzufügen.
Gehen Sie wie folgt vor, um ein Projekttoken zu erstellen:
- Wählen Sie auf der Registerkarte Verwalten die Seite Zugriffssteuerung aus und klicken Sie unter Zugriffstokens auf Neues Zugriffstoken.
- Geben Sie einen Namen ein, wählen Sie die Rolle Editor für das Projekt aus und erstellen Sie ein Token.
- Rufen Sie wieder Ihr Notebook auf, klicken Sie auf das Symbol Mehr in der Symbolleiste des Notebooks und klicken Sie anschließend auf Projekttoken einfügen.
Die project-lib
-Funktionen
Das instanziierte Projektobjekt, das nach dem Importieren der Bibliothek project-lib
erstellt wird, macht eine Gruppe von Funktionen zugänglich, die wie folgt gruppiert sind:
- Projektinformationen abrufen
- Dateien abrufen
- Daten speichern
- Daten von Verbindung lesen
- Verbundene Daten abrufen
Projektinformationen abrufen
Mit den folgenden Funktionen können Sie projektbezogene Informationen programmgesteuert abrufen:
get_name()
Bei Verwendung dieser Funktion wird der Name des Projekts zurückgegeben.
get_description()
Bei Verwendung dieser Funktion wird die Beschreibung des Projekts zurückgegeben.
get_metadata()
Bei Verwendung dieser Funktion werden die Projektmetadaten zurückgegeben.
get_storage_metadata()
Diese Funktion gibt die Metadaten des Objektspeichers zurück, der dem Projekt zugeordnet ist.
get_project_bucket_name()
Diese Funktion gibt den Namen des Projektbuckets im zugeordneten Objektspeicher zurück. Alle Projektdateien werden in diesem Bucket gespeichert.
get_files()
Bei Verwendung dieser Funktion wird die Liste der Dateien im Projekt zurückgegeben. Jedes Element in der zurückgegebenen Liste enthält die ID und den Namen der Datei. Die Liste der zurückgegebenen Dateien wird nicht nach einem Kriterium sortiert und kann sich ändern, wenn Sie die Funktion erneut aufrufen.
get_assets()
Bei Verwendung dieser Funktion wird eine Liste aller Projektassets zurückgegeben. Sie können den optionalen Parameter
asset_type
an die Funktionget_assets
übergeben, um die Assets nach Typ zu filtern. Zulässige Werte für diesen Parameter sinddata_asset
,connection
undasset
. Der Wertasset
gibt alle Assets in Ihrem Projekt zurück. Verwenden Sie beispielsweise die Funktionget_assets("data_asset")
, um nur die Datenassets abzurufen.get_connections()
Bei Verwendung dieser Funktion wird eine Liste der Verbindungen im Projekt zurückgegeben. Jedes Element in der zurückgegebenen Liste enthält die ID und den Namen der Verbindung.
Dateien abrufen
Mit der folgenden Funktion können Sie Dateien abzurufen, die in dem Objektspeicher gespeichert sind, der Ihrem Projekt zugeordnet ist.
Zum Abrufen von Dateien gibt es zwei Methoden:
get_file_url(file_name)
- Dabei istfile_name
der Name der Datei, die Sie abrufen möchten.Diese Funktion gibt die URL zurück, über die eine Datei unter Verwendung von Spark aus dem Objektspeicher abgerufen wird. Die URL wird auf der Basis des Typs des Objektspeichers erstellt, der dem Projekt zugeordnet ist. Hadoop-Konfigurationen werden automatisch eingerichtet, wenn Sie mit dem Objektspeicher Ihres Projekts interagieren.
Im folgenden Beispiel wird veranschaulicht, wie Sie mit dieser Funktion unter Verwendung von Spark Daten aus dem Objektspeicher abrufen:
# 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)
- Dabei istfile_name
der Name der Datei, die Sie abrufen möchten.Bei Verwendung dieser Funktion wird eine Datei aus dem Objektspeicher in den Hauptspeicher des aktiven Kernels abgerufen. Von der Funktion wird ein Bytepuffer zurückgegeben, mit dem Bindungen für kernelspezifische Datenstrukturen erstellt werden können, zum Beispiel ein pandas-Datenrahmen. Diese Methode zum Abrufen von Dateien wird nicht für umfangreiche Dateien empfohlen.
Im folgenden Beispiel wird veranschaulicht, wie eine Datei abgerufen und die Daten in einem pandas-Datenrahmen gelesen werden:
# 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)
Daten speichern
Mit der folgenden Funktion können Sie Daten in dem Objektspeicher speichern, der dem Projekt zugeordnet ist. Die Daten werden dem zugeordneten Cloudobjektspeicher als Projektbucket hinzugefügt. Von dieser Funktion werden mehrere Aktionen ausgeführt. Zunächst werden die Daten in den Objektspeicher gestellt und anschließend werden sie als Datenasset zum Projekt hinzugefügt, sodass die Daten, die Sie als Datei gespeichert haben, in der Datenassetliste im Projekt angezeigt werden.
save_data(file_name, data, set_project_asset=True, overwrite=False)
Von der Funktion werden die folgenden Parameter verwendet:
file_name
: Der Name der erstellten Datei.data
: Die Daten, die hochgeladen werden sollen. Dies kann ein beliebiges Objekt des Typsfile-like-object
sein (z. B. Bytepuffer oder Zeichenfolgepuffer).set_project_asset[optional]
: Fügt die Datei als Datenasset zum Projekt hinzu, nachdem die Daten erfolgreich in den Objektspeicher hochgeladen wurden. Hierbei wird ein boolescher Wert festgelegt, standardmäßig ist der Wert 'true'.overwrite[optional]
: Überschreibt die Datei, wenn sie im Objektspeicher oder im Projekt bereits vorhanden ist. Standardwert ist 'false'.
Im folgenden Beispiel wird veranschaulicht, wie Sie Daten in einer Datei im Objektspeicher speichern können:
# 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
Daten von Verbindung lesen
Mit der folgenden Funktion können Sie Metadaten (Berechtigungsnachweise) einer bestimmten Verbindung abrufen.
get_connection
: Die Funktion akzeptiert als Eingabe die ID der Verbindung oder den Namen der Verbindung. Diese Werte können Sie mit der Funktion get_assets()
abrufen, die id
, name
und type
für alle im Projekt aufgelisteten Assets zurückgibt.
Die Funktion get_connection
gibt Berechtigungsnachweise der Verbindungen zurück, die Sie zum Abrufen von Daten aus der Datenquelle der Verbindung verwenden können.
Das folgende Beispiel zeigt, wie Sie die Berechtigungsnachweise einer Verbindung mit der Funktion get_connection
abrufen können:
# Import the lib
from project_lib import Project
project = Project(sc,"<ProjectId>", "<ProjectToken>")
conn_creds = project.get_connection(name="<ConnectionName>")
Wenn die Verbindung zum Beispiel eine Verbindung zu dashDB ist, können Sie die Daten durch Ausführen des folgenden Codes abrufen:
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()
Verbundene Daten abrufen
Mit der folgenden Funktion können Sie die Berechtigungsnachweise der verbundenen Daten abrufen. Die Funktion gibt ein Wörterverzeichnis zurück, das die Verbindungsberechtigungsnachweise enthält und ein Attribut datapath
, das auf bestimmte Daten in dieser Verbindung verweist (z. B. eine Tabelle in einer dashDB-Instanz oder eine Datenbank in einer Cloudant-Instanz).
get_connected_data
: Diese Funktion akzeptiert als Eingabe die ID oder den Namen der verbundenen Daten. Diese Werte können Sie mit der Funktion get_assets()
abrufen, die id
, name
und type
für alle im Projekt aufgelisteten Assets zurückgibt.
Das folgende Beispiel zeigt, wie Sie die Berechtigungsnachweise für die verbundenen Daten in einer dashDB-Instanz mit der Funktion get_connected_data
abrufen können:
# 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'}
Weitere Informationen
Eine Demo dieser Funktionen finden Sie in einem Blogbeitrag.
Übergeordnetes Thema: Daten in ein Notebook laden und darauf zugreifen