如果需要在笔记本上与watsonx.aiStudio项目和项目资产交互,可以使用Python的 "project-lib
库。 该库类似于项目的编程接口。
通过使用 Python的 project-lib
库,您可以访问项目元数据和资产,包括文件和连接。 该库还包含用于简化访存与项目关联的文件的函数。
-在将数据保存到文件或从文件获取数据时, project-lib
函数不会对数据进行编码或解码。
-无法使用 project-lib
函数来访问已连接的文件夹资产 ( Cloud Object Storage中路径上的文件)。
使用库
Python 的 project-lib
库是预先安装的,可以直接导入到 Notebook 编辑器中的 Notebook 中。 要在 Notebook 中使用 project-lib
库,您需要项目的标识和项目令牌。
要将项目令牌插入到 Notebook 中:
单击 Notebook 工具栏上的更多图标,然后单击插入项目令牌。
如果存在项目令牌,那么会向 Notebook 中添加一个包含下列信息的单元格:
from project_lib import Project project = Project(sc,"<ProjectId>","<ProjectToken>")
sc
是 Spark 上下文(如果使用 Spark)。<ProjectId>
是项目的标识,<ProjectToken>
是项目令牌的值。如果在消息中告知您不存在任何项目令牌,请单击消息中的链接以重定向到项目的 " 访问控制 " 页面,您可以在该页面中创建项目令牌。 您必须有资格创建项目令牌。 有关详细信息,请参阅手动添加项目令牌。
要创建项目令牌,请执行以下操作:
- 从 管理 选项卡中,选择 " 访问控制 " 页面,然后单击 访问令牌下的 新建访问令牌 。
- 输入名称,选择项目的编辑者角色,然后创建令牌。
- 返回到 Notebook,单击 Notebook 工具栏上的更多图标,然后单击插入项目令牌。
project-lib
函数
在导入 project-lib
库之后创建的实例化项目对象会公开通过以下方式分组的函数集:
访存项目信息
您可以使用以下函数来以编程方式访存与项目相关的信息:
get_name()
此函数返回项目的名称。
get_description()
此函数返回项目的描述。
get_metadata()
此函数返回项目元数据。
get_storage_metadata()
此函数将返回与项目关联的对象存储器的元数据。
get_project_bucket_name()
此函数将返回关联对象存储器中的项目存储区名称。 所有项目文件都将存储在此存储区中。
get_files()
此函数返回项目中的文件列表。 所返回列表中的每个元素都包含文件的标识和名称。 所返回文件的列表未按任何条件排序,并且可以在您再次调用该函数时发生更改。
get_assets()
此函数返回所有项目资产的列表。 您可以将可选参数
asset_type
传递到允许按类型过滤资产的函数get_assets
。 此参数的接受的值为data_asset
、connection
和asset
。 值asset
返回项目中的所有资产。 例如,要仅获取数据资产,请使用函数get_assets("data_asset")
。get_connections()
此函数返回项目中具有的连接的列表。 所返回列表中的每个元素都包含连接的标识和名称。
访存文件
您可以使用以下函数访存存储在与您的项目关联的对象存储器中的文件。
您可以通过两种方式访存文件:
get_file_url(file_name)
,其中file_name
是要访存的文件的名称。此函数将返回 URL 以使用 Spark 从对象存储器中访存文件。 根据与项目关联的对象存储器的类型来构造 URL。 当您与项目的对象存储器交互时,会自动设置 Hadoop 配置。
以下示例显示如何使用此函数从使用 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)
,其中file_name
是要访存的文件的名称。此函数将文件从对象存储器访存到运行内核的内存中。 此函数返回可用于绑定到特定于内核的数据结构中的字节缓冲区,例如 pandas DataFrame。 对于超大文件,不建议使用此文件访存方法。
以下示例显示如何访存文件并将数据读取到 pandas DataFrame 中:
# 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)
保存数据
您可以使用以下函数将数据保存到与项目关联的对象存储器。 数据将作为文件添加到关联的 Cloud Object Storage 中的项目存储区。 此函数执行多个操作。 首先,它将数据放入到对象存储器中,然后将此数据作为数据资产添加到项目中,因此您可以在项目中看到另存为数据资产列表中的文件的数据。
save_data(file_name, data, set_project_asset=True, overwrite=False)
此函数采用以下参数:
file_name
:所创建文件的名称。data
:要上载的数据。 这可以是类型为file-like-object
的任何对象,例如,字节缓冲区或字符串缓冲区。set_project_asset[optional]
:在数据成功上载到对象存储器后,将文件作为数据资产添加到项目中。 它采用布尔值,并且缺省情况下设置值 true。overwrite[optional]
:如果文件已存在于对象存储器或项目中,那么将覆盖该文件。 缺省情况下设置为 false。
以下示例显示如何将数据保存到对象存储器中的文件:
# 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
从连接读取数据
您可以使用以下函数来获取给定连接的元数据(凭证)。
get_connection
:此函数采用连接的标识或连接的名称作为输入。 您可以通过使用 get_assets()
函数获取这些值,该函数返回项目中列出的所有资产的 id
、name
和 type
。
函数 get_connection
返回可用于从连接数据源访存数据的连接凭证。
以下示例显示如何能够通过使用 get_connection
函数来访存连接的凭证:
# Import the lib
from project_lib import Project
project = Project(sc,"<ProjectId>", "<ProjectToken>")
conn_creds = project.get_connection(name="<ConnectionName>")
例如,如果您的连接是与 dashDB 的连接,那么您可以通过运行以下代码来访存数据:
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()
访存已连接数据
您可以使用以下函数来访存已连接数据的凭证。 此函数还返回包含连接凭证的字典,此外还返回指向该连接中的特定数据(例如,dashDB 实例中的表或 Cloudant 实例中的数据库)的 datapath
属性。
get_connected_data
:此函数采用已连接数据的标识或已连接数据的名称作为输入。 您可以通过使用 get_assets()
函数获取这些值,该函数返回项目中列出的所有资产的 id
、name
和 type
。
以下示例显示如何能够通过使用 get_connected_data
函数来访存 dashDB 实例中的已连接数据的凭证:
# 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'}
了解更多信息
父主题: 在 Notebook 中装入和访问数据