Создает ли куст новый объект UDF для каждой записи? - PullRequest
4 голосов
/ 20 октября 2011

Скажем, я создаю класс UDF с именем StaticLookupUDF, который должен загружать некоторые статические данные из локального файла во время построения.

В этом случае я хочу убедиться, что я не копирую работу больше, чем янеобходимо, потому что я не хочу перезагружать статические данные при каждом вызове методаvalu ().

Ясно, что каждый маппер использует свою собственную реализацию UDF, но создает новый экземплярполучить для каждой обработанной записи?

Например, , картограф собирается обработать 3 строки.Создает ли он один StaticLookupUDF и трижды вызывает метод define (), или он создает новый StaticLookupUDF для каждой записи, а также вызывает метод оценки только один раз для каждого экземпляра?

Если второй пример верен, каким альтернативным способомя должен структурировать это?

Не могу найти это где-нибудь в документах, я собираюсь просмотреть код, но решил, что я попрошу умных людей здесь одновременно.

1 Ответ

2 голосов
/ 10 апреля 2012

Все еще не совсем уверен в этом, но я справился с этим, имея статическое ленивое значение, которое загружало данные по мере необходимости.

Таким образом, у вас есть один экземпляр статического значения на сопоставитель.Так что, если вы читаете в наборе данных, и у вас есть 6 задач карты, вы будете читать данные 6 раз.Не идеально, но лучше, чем один раз за запись.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...