U-SQL: как передать параметр в определяемый пользователем редуктор? - PullRequest
0 голосов
/ 08 января 2019

Я бы хотел передать параметр моему определяемому пользователем редуктору (кроме ввода и вывода). В документации (https://docs.microsoft.com/en-us/u-sql/statements-and-expressions/reduce-expression) упоминается, что я должен быть в состоянии сделать это:

ИСПОЛЬЗОВАНИЕ нового MyNameSpace.MyReducer (параметр: "значение")

Когда я пытаюсь это сделать, компилятор говорит мне, что у моего редуктора нет конструктора, который принимает только один аргумент. Он имеет только конструктор, который принимает 2 аргумента, но вызывает его без параметров (ИСПОЛЬЗОВАНИЕ new MyNameSpace.MyReducer ()) работает.

Мне все еще нужны входные и выходные параметры IRowset, поэтому создание конструктора только с одним параметром не будет работать. Если я создаю один с 3 параметрами (вход, выход, параметр), то я не знаю, как вызвать его из U-SQL (как передать ввод и вывод?)

1 Ответ

0 голосов
/ 09 января 2019

Вы передаете ввод и вывод в методе Reduce, а не в конструкторе. Поэтому я советую просто создать конструктор, который принимает 1 параметр в вашем UDO.

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")

Попробуйте что-то вроде этого.

...