Установка R-пакетов в Azure Data Lake Analytics - PullRequest
0 голосов
/ 24 октября 2018

У меня проблема с установкой следующих R-пакетов и ссылками на них в R-скрипте, который я инкапсулировал в U-SQL-скрипте.Мне удалось запустить простой R-скрипт в U-SQL-задании, которое не требовало специальных пакетов.Сейчас я пытаюсь создать R-скрипт, который ссылается на dplyr, tdyr и reshape2.Поэтому я скачал эти три пакета вручную как .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)

Надеюсь, что кто-то может увидеть, что мне не хватает.

Спасибо, Джон

Ответы [ 2 ]

0 голосов
/ 04 января 2019

Ответ от "Хорхе Рибейро" работает очень хорошо.Но есть возможности, что даже после выполнения этих шагов вы можете получить ошибку: -.

 Unhandled exception from user code: "Specified directory not found:
 'D:\5827d493\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

из лазуриданные на локальную машину.

Извлеките все файлы zip-файла (MRS.9.1.0.zip) в одно и то же место и запустите R.exe в папке bin.Примечание: не имеет значения, если вы загрузите и распакуете файл MRS.9.1.0.zip на компьютер с или без предварительной установки «R».Вы можете скачать и распаковать на любой машине. Установить все нужные вам пакеты (с зависимостями параметров = true & lib = libpath).

libpath = "Путь к файлупапка библиотеки в извлеченных файлах (т.е. распакованное имя папки библиотеки)

install.packages ('yourpackage', зависимости = TRUE, lib = libpath)

Выберите все файлы (control + A) и снова заархивируйте их в одну и ту же папку / папку.

Примечание. Всегда выбирайте все файлы и архивируйте их обратно в одну папку и переименовывайте в архив.файл (если необходимо, как указано в названии файла сборки RegsiterAll). В противном случае вы всегда будете сталкиваться с ошибкой, о которой я упоминал выше.

Загрузите и замените файл на datalake тем, который вы только что создали. Выполните RegisterAllAssemblies.USQL, и ваши библиотеки будут доступны для использования позже.
0 голосов
/ 24 октября 2018

Простой способ сделать это - скачать файл на datalake в каталоге: usqlext\assembly\R\MRS.9.1.0.zip

. Вы распаковываете файл (на машине без R) и запускаете R.exe в папке bin.

Теперь вы можете установить все нужные вам пакеты (с зависимостями параметров = true)

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

Снова сжать папку и заменить файл на datalake тем, который вы создали.

Выполните RegisterAllAssemblies.USQL еще раз, и ваш пакет будет доступен для вас!

library('yourpackage')

Если вы не нашли ошибку пакета, вам нужен этот трюк:

libpath = .libPaths()[1]
install.packages('yourpackage', lib = libpath)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...