首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在U-SQL中执行R

在U-SQL中执行R
EN

Stack Overflow用户
提问于 2018-09-05 17:20:59
回答 2查看 319关注 0票数 3

我尝试使用U-SQL和R进行预测,因此需要从U-SQL向R传递一个值列表,并将预测从R返回到U-SQL

我找到的所有示例都使用了reducer,因此将仅处理1行。

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

有没有可能不向R发送列的列表,而是发送行的列表进行处理?

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-09-05 19:17:14

通过definition,用户定义的reducers获取n行并生成一行或多行,使用它来生成新的列数据,同时也生成新的行。U-SQL的R扩展包括一个内置的reducer (Extension.R.Reducer),它在分配给reducer的每个顶点上运行R代码。您可以使用特殊的R参数"inputFromUSQL“获取输入行集,并使用R对其进行处理。

就像你引用的那样,这应该一次对所有行起作用:

代码语言:javascript
复制
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")
票数 1
EN

Stack Overflow用户

发布于 2018-09-17 23:04:09

还有另一个重要的细节可能是导致您提到的问题的原因-分区。通过使用REDUCE表达式,我们可以通过分区来分离分析工作负载。每个分区可以独立地并行执行,所有的结果都在最后通过REDUCE操作收集。当使用R进行数据预测时,我们需要一次运行算法的所有行,所以我们不能进行任何分区。如果我们不需要分区,我们可以使用REDUCE ALL。另一种方法是指定一个伪分区(为所有行指定一个相同的分区)。

在这里查看一个示例:https://github.com/Azure/ADLAwithR-GettingStarted/tree/master/Tutorial/Exercise5

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52181554

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档