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

U-SQL: How to pass parameter to User Defined Reducer?

我想将一个参数传递给我的 User Defined Reducer(输入和输出除外)。文档 (https://docs.microsoft.com/en-us/u-sql/statements-and-expressions/reduce-expression) 提到我应该能够通过以下方式做到这一点:

使用新的MyNameSpace.MyReducer(参数:"value")

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

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

您在方法 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")

尝试这样的事情。