0

我正在尝试将 .RData 文件加载到 DSX 中的 R Notebook 中。我已按照此笔记本 ( https://apsportal.ibm.com/exchange/public/entry/view/90a34943032a7fde0ced0530d976ca82 ) 中的说明进行操作,但仍然无法加载我的数据。到目前为止,我已成功完成以下步骤:

  1. 我已将数据集加载到对象存储中。
  2. 我使用 Insert to code -> Insert Credentials 按钮插入了我的凭据。这似乎按预期工作。
  3. 在下一个单元格中,我选择了 Insert to code -> Insert textConnection object 选项。这似乎也按预期工作。
  4. 第 3 步的输出如下:

您的数据文件已加载到 textConnection 对象中,您可以使用您选择的包处理数据。

data.1 <- getObjectStorageFileWithCredentials_xxxxxxxxxx("projectname", "file.RData")

  1. 在此之后,由于我的文件是 .RData 文件,我输入了以下命令:

数据 <- 加载(“文件.RDA”)

当我运行这个单元格时,我得到了以下输出:

readChar(con, 5L, useBytes = TRUE) 中的警告消息:“无法打开压缩文件'file.RDA',可能的原因'没有这样的文件或目录'”</p>

readChar(con, 5L, useBytes = TRUE) 中的错误:无法打开连接 Traceback:

  1. 加载(“文件.RDA”)
  2. readChar(con, 5L, useBytes = TRUE)

  3. 当我输入以下命令来打印数据集时:

数据

我得到以下输出:

X.html..h1.Forbidden..h1..p.Access.was.denied.to.this.resource...p...html。

请问有人可以帮忙吗?

谢谢,文奇

4

1 回答 1

0

这是一个解决方法,因为加载无法从响应对象中读取,因为要从对象存储中读取对象,唯一的方法是 REST api。

我尝试使用 rawConnection 而不是 textConnection 但似乎没有帮助。

因此,与其将读取的对象直接从 OS 传递给 load 或 readRDS 函数。您可以将其写入附加的 spark 服务的 GPFS 并从那里读取它,就像从本地读取一样。

从生成的代码更改此行:-

    rawdata <- content(httr::GET(url = access_url, add_headers ("Content-Type" = "application/json", "X-Auth-Token" = x_subject_token)), as="raw")
rawdata

基本上不是返回 text ,而是返回原始对象,然后将其作为二进制对象写入本地 GPFS。

data.3 <- getObjectStorageFileWithCredentials_216c032f3f574763ae975c6a83a0d523("testObjectStorage", "sample.rdata")


writeBin(data.3,"sample.rdata")

现在使用 readRDS 或 load 将其读回。

load("sample.rdata")

查看加载的数据框。ls()

我希望它有所帮助。

谢谢,查尔斯。

于 2017-09-12T07:14:22.573 回答