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