R в U-SQL в Azure Data Lake Analytics - PullRequest
       0

R в U-SQL в Azure Data Lake Analytics

0 голосов
/ 13 ноября 2018

Я уже некоторое время экспериментирую с R в Azure Data Lake Analytics, и я застреваю при установке дополнительных R-пакетов, таких как dlplyr и tidyr. Я задал следующий вопрос, но это не решило проблему: Установка R-пакетов в Azure Data Lake Analytics

Теперь я пытаюсь следовать этому руководству https://blog.revolutionanalytics.com/2017/10/adla-with-r.html, но получаю ошибку при выполнении третьего сценария usqlscriptEx3a.usql (https://github.com/Azure/ADLAwithR-GettingStarted/tree/master/Tutorial/Exercise3). Я использую сценарий как есть, и я отлаживаю R -код локально, и это, кажется, делает правильную вещь, так что теперь я не знаю, где искать. Ошибка:

An unhandled exception from user code has been reported when invoking the method 'Reduce' on the user type 'Extension.R.Reducer'
Unhandled exception from user code: "Output column 'Par' is missing from the data frame"

Однако Пар, кажется, там, как и должно быть.

Вот часть кода из usqlscriptEx3a.usql:

REFERENCE ASSEMBLY [ExtR];

//declare the R script as a string variable and pass it as a parameter to 
the Reducer:
DECLARE @myRScript = @"
temp = inputFromUSQL

t1 = loadedNamespaces()
temp = data.frame(loadedNamespaces = t1) 

t2 = data.frame(apply(temp[1],1,FUN=function(x) 
{paste(unlist(packageVersion(as.character(x))),collapse='.')}) )
names(t2) = 'packageVersion'
temp$packageVersion = t2$packageVersion

t3 = sessionInfo()[1]
t3 = t3$R.version$version.string
t3 = as.character(t3)
temp$Rversion = t3
temp$Rversion[2:nrow(temp)]=''

outputToUSQL = temp
";

DECLARE @myOutputFile string  = @"/TutorialMaterial/outex3a.txt";

@somedata  = 
SELECT * FROM 
    (VALUES
        ("Contoso", 1500.0),
        ("Woodgrove", 2700.0)
    ) AS 
          D( customer, amount );


@ExtendedData = SELECT 
0 AS Par,
       *
FROM @somedata;


@RScriptOutput = REDUCE @ExtendedData ON Par PRODUCE 
Par,  
loadedNamespaces string,
packageVersion string,
Rversion string 
USING new Extension.R.Reducer(command:@myRScript, rReturnType:"dataframe");

1 Ответ

0 голосов
/ 13 ноября 2018

Оказывается, что, по крайней мере, в моем случае, отсутствовала следующая строка:

READONLY Par

Чтобы скрипт работал как usqlscriptEx3a.usql, мне нужно было вставить READONLY Par в следующие строки:

@RScriptOutput = REDUCE @ExtendedData ON Par
PRODUCE Par,  
loadedNamespaces string,
packageVersion string,
Rversion string
READONLY Par
USING new Extension.R.Reducer(command:@myRScript, rReturnType:"dataframe");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...