Вызовы API внутри задания mapreduce - PullRequest
0 голосов
/ 05 марта 2012

Я хотел бы спросить вас о неудобствах вызова внешнего API при выполнении задания сокращения карты.какие недостатки?

Некоторые примеры: если внутри маппера нам нужно геокодировать адрес и мы вызываем API Google Maps, или вызываем внешнюю БД, чтобы получить связанные элементы элемента и т. д.

1 Ответ

2 голосов
/ 05 марта 2012

Совершенно нормально совершать вызов во внешний API, если во внешнем API нет вызовов БД. Во многих отношениях это предпочтительнее, чем переписывать логику заново. Часто вы хотите, чтобы ваши задания MapReduce были не чем иным, как оберткой вокруг логики, написанной не в контексте MapReduce. Это сделано для лучшего тестируемого кода.

Однако делать внешние вызовы БД настоятельно не рекомендуется. Это резко снизит скорость ваших заданий MapReduce, поскольку каждый вызов будет вызовом с произвольным доступом. Кроме того, наличие нескольких тысяч ударов Map / Reduce, попадающих в вашу БД одновременно, может поставить БД на колени. Если вам нужны связанные элементы, желательно иметь все элементы в HDFS и выполнять соединение в MapReduce. Если БД, о которой вы говорите, является хранилищем NoSQL, таким как Cassandra или HBase, у них будет функция пакетного экспорта для экспорта всей таблицы в HDFS.

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