U-SQL:如何将参数传递给用户定义的Reducer?

时间:2019-01-07 23:34:15

标签: u-sql

我想将参数传递给我的用户定义的减速器(除了输入和输出)。文档(https://docs.microsoft.com/en-us/u-sql/statements-and-expressions/reduce-expression)提到我应该可以通过以下方式做到这一点:

使用新的MyNameSpace.MyReducer(参数:“值”)

当我尝试这样做时,编译器告诉我我的reducer没有只接受一个参数的构造函数。它只有一个带有2个参数的构造函数,但不带任何参数调用它(使用new MyNameSpace.MyReducer()即可)。

我仍然需要IRowset输入和输出参数,因此仅使用一个参数创建构造函数将行不通。如果我用3个参数(输入,输出,参数)创建一个,那么我不知道如何从U-SQL调用它(如何传递输入和输出?)

1 个答案:

答案 0 :(得分:1)

您正在通过Reduce方法而不是在构造函数中传递输入和输出。 因此,我的建议是只创建一个在您的UDO中采用1个参数的构造函数。

public class MyReducer: IReducer
{
    string myParam;
    public MyReducer(string _myParam){
    myParam=_myParam;
}
    public override IEnumerable<IRow> Reduce(IRowset input, IUpdatableRow output)
    {

然后调用减速器时,只需添加要传递的值

USING new MyNameSpace.MyReducer("value")

尝试这样的事情。