在 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.
在这种情况下,以下步骤可以解决问题。 -
- 只下载
/usqlext/assembly/R/MRS.9.1.0.zip
从 Azure 数据湖到
本地机器。
- 将所有压缩文件 (MRS.9.1.0.zip) 解压缩到同一位置,然后在 bin 文件夹中执行 R.exe。
注意:无论您是否下载并解压 MRS.9.1.0.zip 文件到机器上,有或没有预先 "R Installation" 都没有关系。您可以在任何机器上下载和解压缩。
- 安装所有你想要的包(参数 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)
- 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.
- 上传 datalake 上的文件并将其替换为您刚刚创建的文件。
- 执行
RegisterAllAssemblies.USQL
之后您的库就可以使用了。
我在安装以下 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.
在这种情况下,以下步骤可以解决问题。 -
- 只下载
/usqlext/assembly/R/MRS.9.1.0.zip
从 Azure 数据湖到 本地机器。
- 将所有压缩文件 (MRS.9.1.0.zip) 解压缩到同一位置,然后在 bin 文件夹中执行 R.exe。 注意:无论您是否下载并解压 MRS.9.1.0.zip 文件到机器上,有或没有预先 "R Installation" 都没有关系。您可以在任何机器上下载和解压缩。
- 安装所有你想要的包(参数 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)
- 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.
- 上传 datalake 上的文件并将其替换为您刚刚创建的文件。
- 执行
RegisterAllAssemblies.USQL
之后您的库就可以使用了。