在 U-SQL 中执行 R
Execute R inside U-SQL
我正在尝试使用 U-SQL 和 R 进行预测,因此我需要从 U-SQL 向 R 传递一个值列表,然后 return 进行预测从 R 到 U-SQL
我找到的所有示例都使用了 reducer,因此只会处理 1 行。
https://docs.microsoft.com/en-us/azure/data-lake-analytics/data-lake-analytics-u-sql-r-extensions
是否可以不向 R 发送列列表,而是发送行列表进行处理?
谢谢!
通过 definition 用户定义的缩减器获取 n 行并生成一行或多行,使用它来生成新的列数据以及新的行。 U-SQL 的 R 扩展包括一个内置的缩减器 (Extension.R.Reducer),它在分配给缩减器的每个顶点上运行 R 代码。您可以使用 "inputFromUSQL" 的特殊 R 参数获取输入行集,并使用 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")
还有另一个重要的细节可能是您提到的问题的原因 - 分区。通过使用 REDUCE 表达式,我们可以按分区分离我们的分析工作负载。每个分区可以独立并行执行,最后通过 REDUCE 操作收集所有结果。当使用 R 进行数据预测时,我们需要一次对所有行进行 运行 算法,因此我们无法进行任何分区。如果我们不需要分区,我们可以使用 REDUCE ALL。另一种方法是指定一个伪分区(所有行一个相同的分区)。
在此处查看示例:https://github.com/Azure/ADLAwithR-GettingStarted/tree/master/Tutorial/Exercise5
我正在尝试使用 U-SQL 和 R 进行预测,因此我需要从 U-SQL 向 R 传递一个值列表,然后 return 进行预测从 R 到 U-SQL
我找到的所有示例都使用了 reducer,因此只会处理 1 行。
https://docs.microsoft.com/en-us/azure/data-lake-analytics/data-lake-analytics-u-sql-r-extensions
是否可以不向 R 发送列列表,而是发送行列表进行处理?
谢谢!
通过 definition 用户定义的缩减器获取 n 行并生成一行或多行,使用它来生成新的列数据以及新的行。 U-SQL 的 R 扩展包括一个内置的缩减器 (Extension.R.Reducer),它在分配给缩减器的每个顶点上运行 R 代码。您可以使用 "inputFromUSQL" 的特殊 R 参数获取输入行集,并使用 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")
还有另一个重要的细节可能是您提到的问题的原因 - 分区。通过使用 REDUCE 表达式,我们可以按分区分离我们的分析工作负载。每个分区可以独立并行执行,最后通过 REDUCE 操作收集所有结果。当使用 R 进行数据预测时,我们需要一次对所有行进行 运行 算法,因此我们无法进行任何分区。如果我们不需要分区,我们可以使用 REDUCE ALL。另一种方法是指定一个伪分区(所有行一个相同的分区)。
在此处查看示例:https://github.com/Azure/ADLAwithR-GettingStarted/tree/master/Tutorial/Exercise5