Как передать объекты с клиента на карту и уменьшить? - PullRequest
2 голосов
/ 27 октября 2011

Это класс должен расширять класс ObjectWritable? Тогда как я могу передать его от клиента на карту и уменьшить? спасибо

1 Ответ

3 голосов
/ 27 октября 2011

Я предполагаю, что вы хотите передать объект из вашего клиентского кода в ваши Mappers и Reducers?

Для этого вам придется использовать некоторую форму сериализации, поскольку данные передаются по проводам.В зависимости от вашего сценария существует несколько возможностей:

  1. Вероятно, наилучшим решением было бы создание объекта в Mappers / Reducers.Для передачи информации, необходимой для вызова конструктора, вы можете использовать Job-Configuration.

    conf.setInt("foo", 32);
    conf.set("bar", "bazz");
    
  2. Если ваш объект является сериализуемым и довольно маленьким, вы можете его сериализовать и включить в него кодированный base64его версия в JobConf.

  3. Если сериализованные объекты слишком велики, вы можете использовать распределенный кеш: http://hadoop.apache.org/common/docs/r0.20.2/mapred_tutorial.html#DistributedCache
...