如果需要在笔记本上与watsonx.aiStudio 项目和项目资产交互,可以使用 R 的 "project-lib
库。 该库类似于项目的编程接口。
通过使用 project-lib
Library for R ,您可以访问项目元数据和资产,包括文件和连接。 该库还包含用于简化访存与项目关联的文件的函数。
-在将数据保存到文件或从文件获取数据时, project-lib
函数不会对数据进行编码或解码。
-无法使用 project-lib
函数来访问已连接的文件夹资产 ( Cloud Object Storage中路径上的文件)。
使用库
R 的 project-lib
库已预安装,可以直接导入到 Notebook 编辑器中的 Notebook 中。 要在 Notebook 中使用 project-lib
库,您需要项目的标识和项目令牌。
要将项目令牌插入到 Notebook 中:
单击 Notebook 工具栏上的更多图标,然后单击插入项目令牌。
如果存在项目令牌,那么会向 Notebook 中添加一个包含下列信息的单元格:
library(projectLib) project <- projectLib::Project$new(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()
此函数返回所有项目资产的列表。 您可以将可选参数
assetType
传递到允许按类型过滤资产的函数get_assets
。 此参数的接受的值为data_asset
、connection
和asset
。 值asset
返回项目中的所有资产。 例如,要仅获取数据资产,请使用函数get_assets("data_asset")
。get_connections()
此函数返回项目中具有的连接的列表。 所返回列表中的每个元素都包含连接的标识和名称。
访存文件
您可以使用以下函数访存存储在与您的项目关联的对象存储器中的文件。
您可以通过两种方式访存文件:
get_file_url(filename)
,其中filename
是要访存的文件的名称。此函数将返回 URL 以使用 Spark 从对象存储器中访存文件。 根据与项目关联的对象存储器的类型来构造 URL。 当您与项目的对象存储器交互时,会自动设置 Hadoop 配置。
以下示例显示如何使用此函数从使用 Spark 的对象存储器中访存数据:
# Import the lib library(projectLib) project <- projectLib::Project$new(sc, "<ProjectId>", "<ProjectToken>") # Get the url url <- project$get_file_url("myFile.csv") # Fetch the CSV file from the object storage using Spark invisible(sparkR.session(appName = "SparkSession R")) df.data <- read.df( url, source = "org.apache.spark.sql.execution.datasources.csv.CSVFileFormat", header = "true") head(df.data)
get_file(filename)
,其中filename
是要访存的文件的名称。此函数将文件访存到正在运行的内核的内存中。 此函数返回可用于绑定到特定于内核的数据结构中的字节缓冲区,例如 R 数据帧。 对于超大文件,不建议使用此文件访存方法。
以下示例显示如何访存文件并将数据读取到 R 数据帧中:
# Import project lib library(projectLib) project <- projectLib::Project$new(sc , "<ProjectId>", "<ProjectToken>") # Fetch data my.file <- project$get_file("my_file.csv") # Read the CSV data file into a data frame df.data <- read.csv(text = rawToChar(my.file)) head(df.data)
保存数据
您可以使用以下函数将数据保存到与项目关联的对象存储器。 数据将作为文件添加到关联的 Cloud Object Storage 中的项目存储区。 此函数执行多个操作。 首先,它将数据放入到对象存储器中,然后将此数据作为数据资产添加到项目中,因此您可以在项目中看到另存为数据资产列表中的文件的数据。
save_data(filename, data, setProjectAsset=TRUE, overwrite=FALSE)
此函数采用以下参数:
filename
:所创建文件的名称。data
:要上载的数据。 此参数的接受的类型为 R 原始对象或字符串缓冲区。setProjectAsset[optional]
:在数据成功上载到对象存储器后,将文件作为数据资产添加到项目中。 它采用布尔值,并且缺省情况下设置值 true。overwrite[optional]
:如果文件已存在于对象存储器或项目中,那么将覆盖该文件。 缺省情况下设置为 false。
以下示例显示如何将数据保存到对象存储器中的文件:
library("projectLib")
project <- access_project()
# Capture CSV data from console output
csv_lines <- capture.output(write.csv(df.data, row.names=FALSE), type="output")
csv_raw <- charToRaw(paste0(csv_lines, collapse='\n'))
project$save_data("file.csv", csv_raw)
从连接读取数据
您可以使用以下函数来获取给定连接的元数据(凭证)。
get_connection
:此函数采用连接的标识或连接的名称作为输入。 您可以通过使用 get_assets()
函数获取这些值,该函数返回项目中列出的所有资产的 id
、name
和 type
。
函数 get_connection
返回可用于从连接数据源访存数据的连接凭证。
以下示例显示如何能够通过使用 get_connection
函数来访存连接的凭证:
# Import project lib
library(projectLib)
project <- projectLib::Project$new(sc , "<ProjectId>", "<ProjectToken>")
# Fetch connection
conn.cred <- project$get_connection(name="<ConnectionName>")
例如,如果您的连接是与 dashDB 的连接,那么您可以通过运行以下代码来访存数据:
library(ibmdbR)
props <- paste("DASHDB;DATABASE=BLUDB;HOSTNAME=", conn.cred$host, ";PORT=50000;PROTOCOL=TCPIP;", sep="")
conn <- idaConnect(props, uid = conn.cred$username, pwd = conn.cred$password, conType = "odbc")
idaInit(conn)
idf.1 <- ida.data.frame('<TableName>')
head(idf.1)
访存已连接数据
您可以使用以下函数来访存已连接数据的凭证。 此函数还返回包含连接凭证的字典,此外还返回指向该连接中的特定数据(例如,dashDB 实例中的表或 Cloudant 实例中的数据库)的 datapath
属性。
get_connected_data
:此函数采用已连接数据的标识或已连接数据的名称作为输入。 您可以通过使用 get_assets()
函数获取这些值,该函数返回项目中列出的所有资产的 id
、name
和 type
。
以下示例显示如何能够通过使用 get_connected_data
函数来访存 dashDB 实例中的已连接数据的凭证:
# Import project lib
library(projectLib)
project <- projectLib::Project$new(sc , "<ProjectId>", "<ProjectToken>")
# Fetch credentials of the connected data
conn.data <- project$get_connected_data(id="<ConnectedDataId>")
父主题: 在 Notebook 中装入和访问数据