在 Azure Data Lake Analytics 中安装 R 包

Installing R-packages in Azure Data Lake Analytics

我在安装以下 R 包并在我封装在 U-SQL 脚本中的 R 脚本中引用它们时遇到问题。我在 U-SQL-job 中成功地 运行 了一个简单的 R 脚本,不需要特殊的包。现在我正在尝试创建一个引用 dplyr、tdyr 和 reshape2 的 R 脚本。因此,我手动下载了这三个包作为 .zip 和 .tar.gz 文件,并将它们上传到我的 ADL 帐户。示例:

../usqlext/samples/R/dplyr_0.7.7.zip

U-SQL的开头是这样的:

REFERENCE ASSEMBLY [ExtR];   //enable R extensions for the U-SQL Script

DEPLOY RESOURCE @"/usqlext/samples/R/dplyr_0.7.7.zip";
DEPLOY RESOURCE @"/usqlext/samples/R/reshape2_1.4.3.zip";
DEPLOY RESOURCE @"/usqlext/samples/R/tidyr_0.8.1.zip";

R 脚本是这样开始的:

// declare the R script as a string variable and pass it as a parameter to the Reducer:
DECLARE @myRScript = @"
install.packages('dplyr_0.7.7.zip', repos = NULL) # installing package
unzip('dplyr_0.7.7.zip')
require(dplyr)

install.packages('tidyr_0.8.1.zip', repos = NULL) # installing package
unzip('tidyr_0.8.1.zip')
require(tidyr)

install.packages('reshape2_1.4.3.zip', repos = NULL) # installing package
unzip('reshape2_1.4.3.zip')
require(reshape2)

但是,我不断收到错误消息,提示我这些软件包仍未成功安装。目前我收到以下错误消息:

Unhandled exception from user code: "Error in function_list[[i]](value) : could not find function "group_by"

该错误来自以下一段 R 代码:

longStandardized <- dataset %>%
    group_by(InstallationId) %>%
    mutate(stdConsumption = znorm(tmp)) %>%
    select(InstallationId, Hournumber, stdConsumption)

希望有人能看到我遗漏的东西。

谢谢 乔恩

最简单的方法是,将文件下载到目录中的 datalake 上: usqlext\assembly\R\MRS.9.1.0.zip

你解压缩文件(在没有安装 R 的机器上)并在 bin 文件夹上执行 R.exe。

现在你可以安装你想要的所有包(参数 dependencies = true)

install.packages('yourpackage', dependencies = TRUE)

再次压缩文件夹并用您创建的文件替换datalake上的文件。

再次执行RegisterAllAssemblies.USQL,您的包裹就可以使用了!

library('yourpackage')

如果get not find package报错,你需要这个技巧:

libpath = .libPaths()[1]
install.packages('yourpackage', lib = libpath)

"Jorge Ribeiro" 的答案非常有效。但是有可能,即使按照这些步骤操作,您最终也可能会遇到错误,如 - .

 Unhandled exception from user code: "Specified directory not found:
 'D:27d493\bin\x64'". The details includes more information
 including any inner exceptions and the stack trace where the exception
 was raised.

在这种情况下,以下步骤可以解决问题。 -

  1. 只下载

    /usqlext/assembly/R/MRS.9.1.0.zip

从 Azure 数据湖到 本地机器。

  1. 将所有压缩文件 (MRS.9.1.0.zip) 解压缩到同一位置,然后在 bin 文件夹中执行 R.exe。 注意:无论您是否下载并解压 MRS.9.1.0.zip 文件到机器上,有或没有预先 "R Installation" 都没有关系。您可以在任何机器上下载和解压缩。
  2. 安装所有你想要的包(参数 dependencies = true & lib = libpath).

libpath = "Path of the library folder under extracted files (i.e unzipped library folder name)

install.packages('yourpackage', dependencies = TRUE, lib = libpath)

  1. Select 所有文件 (control + A) 并再次将它们压缩到同一个 location/folder 中。

Note : Always do select all and zip them back into same folder & rename the zipped file (if needed as in name mentioned n RegsiterAll Assembly file).Otherwise, you'll always end up with error I mentioned above.

  1. 上传 datalake 上的文件并将其替换为您刚刚创建的文件。
  2. 执行 RegisterAllAssemblies.USQL 之后您的库就可以使用了。