Это совершенно нормально для вызывать внешний API, если во внешнем API нет вызовов БД. Во многих отношениях это предпочтительнее повторять вашу логику. Часто вы хотите, чтобы ваши задания MapReduce были не чем иным, как оболочкой вокруг логики, написанной в контексте non MapReduce. Этот make для лучшего тестируемого кода.
Однако внешние вызовы БД НАСТОЯТЕЛЬНО обескуражены. Это значительно сократит скорость ваших заданий MapReduce, так как каждый вызов будет произвольным вызовом. Кроме того, при наличии нескольких тысяч карт/сокращений taks, ударяющих вашу БД, вы можете довести БД до колен. Если вам нужны связанные элементы, желательно иметь все элементы на HDFS и делать соединение в MapReduce. Если вы говорите о БД, это магазин NoSQL, такой как Cassandra или HBase, у них будет функция пакетного экспорта для экспорта всей таблицы на HDFS.
Но что, если вам нужно искать связанные элементы, скажем, 2 миллиона элементов, а число возможных вариантов - 30 миллионов, есть ли какой-либо шаблон для уменьшения карты для этого? – Fgblanch
Возможно ли, что 30 миллионов для каждого из 2 миллионов предметов или всего 30 миллионов? Если это всего 30 миллионов, тогда ваш лучший вариант - поставить 30 миллионов предметов на HDFS и сделать соединение в MapReduce –
. 30 миллионов возможных для каждого из 2 миллионов предметов, задача, которую нужно выполнить, - это сопоставить элементы. – Fgblanch