Aerospike - какое максимальное количество параметров можно передать в запрос

Когда я передаю слишком много аргументов функции UDF (скрипт LUA) в aerospike, я получаю сообщение об ошибке: «Для объявления типа Func было указано неправильное количество аргументов типа».

Я пытался передать 5 тыс. значений в виде списка, одно «Значение», в котором было 5 тыс. строковых объектов. Я попробовал это со 100, и это все еще вызывало у меня проблему, однако это сработало для 10.

Код вызова выглядит примерно так:

var statement = new Statement();

statement.SetNamespace("blah");
statement.SetSetName("blu");
statement.SetBinNames("blee");

using (var result = Client.QueryAggregate(new QueryPolicy()
                                                          {
                                                              timeout = 600000
                                                          }, statement, packageName, functionName, parameters))
            {
                while (result.Next())
                {
                    retVal.Add((T) result.Object);
                }
            }

Команда Aerospike, есть идеи, какое максимальное число я могу передать здесь в параметре списка в LUA udf? Есть ли способ расширить это?

*Это фоновый метод, который запускается два раза в день, производительность здесь не имеет большого значения.


person Sumit Maingi    schedule 18.11.2015    source источник
comment
К вашему сведению, я изменил подход и вместо этого запускаю 5k запросов вместо вторичного индекса с некоторым распараллеливанием, ответ намного быстрее, и я также избегаю сканирования. В любом случае, было бы неплохо знать предел.   -  person Sumit Maingi    schedule 18.11.2015


Ответы (1)


Кажется, Lua не устраивает большое количество параметров (более 50). Вы должны параметризовать Map() или таблицу и передать это как один аргумент , затем распакуйте его внутри вашей функции lua.

См. раздел Известные ограничения на сайте Руководство по UDF.

person Ronen Botzer    schedule 18.11.2015