Выполнить R внутри U-SQL - PullRequest
       41

Выполнить R внутри U-SQL

0 голосов
/ 05 сентября 2018

Я пытаюсь использовать U-SQL и R для прогнозирования, поэтому мне нужно передать из U-SQL в R список значений и вернуть прогноз из R в U-SQL

Во всех найденных примерах используется редуктор, поэтому будет обрабатываться только 1 строка.

https://docs.microsoft.com/en-us/azure/data-lake-analytics/data-lake-analytics-u-sql-r-extensions

Можно ли вместо того, чтобы отправлять в R список столбцов, отправлять список строк для обработки?

Спасибо!

Ответы [ 2 ]

0 голосов
/ 17 сентября 2018

Существует еще одна ВАЖНАЯ деталь, которая может быть причиной упомянутой вами проблемы - разбиение на разделы. Используя выражение REDUCE, мы можем разделить рабочую нагрузку анализа по разделам. Каждый раздел может выполняться независимо параллельно, и все результаты собираются в конце операции REDUCE. При использовании R для прогнозирования данных нам нужны все строки одновременно для запуска алгоритмов, поэтому мы не можем делать какие-либо разбиения. Если нам не требуется разделение, мы можем использовать REDUCE ALL. Другой способ - указать псевдораздел (один и тот же раздел для всех строк).

Проверьте пример здесь: https://github.com/Azure/ADLAwithR-GettingStarted/tree/master/Tutorial/Exercise5

0 голосов
/ 05 сентября 2018

По определение Пользовательские редукторы берут n строк и создают одну или несколько строк, используют их для создания новых данных столбца, а также новых строк. Расширения R для U-SQL включают встроенный редуктор (Extension.R.Reducer), который запускает R-код для каждой вершины, назначенной редуктору. Вы можете получить входной набор строк с помощью специального параметра R «inputFromUSQL» и работать с ним с помощью R.

Как вы уже упоминали, это должно работать на всех строках одновременно:

DECLARE @myRScript = @"
inputFromUSQL$mydata = as.factor(inputFromUSQL$mydata)
<..>
";

@myData = <my u-sql query>

@RScriptOutput = REDUCE @myData <..>
USING new Extension.R.Reducer(command:@myRScript, rReturnType:"dataframe")
...