Я привык создавать MapReduce
задания с использованием HBase
таблиц в Hadoop+HBase
. Я не работал много MR, используя только Hadoop
.
Одна из особенностей, которые мне нравятся в среде на основе HBase
, заключается в том, что в случае многократного выполнения, если я пишу в одну и ту же таблицу вывода, и определенный ключ уже присутствует, строка обновляется с текущим выводом. Пожалуйста, обратите внимание, я использую слово updated только для простоты, я понимаю хранилище на основе версий в HBase
.
Теперь мой вопрос: есть ли способ реализовать этот механизм только в среде Hadoop
? Я понимаю, что в этой среде, если я выполняю несколько прогонов одного и того же задания и мне нужно сохранить более старые данные результатов, я должен использовать новые выходные каталоги для каждого прогона. Это отлично. Единственное, что меня беспокоит, - это выбрать последние выходные данные / строки для ключа (или одного из них). Это возможно? Как этого достичь? Я делаю что-то вроде 1016 здесь. Один из способов, который я могу придумать, состоит в том, что если A является выходом первого выполнения, а B является выходом второго, и для каждой выходной строки я добавляю другое поле со временем выполнения или time_at_write. Затем, используя MR и A и B в качестве входных данных, где при уменьшении я проверяю запись с самым последним time_at_write (или в зависимости от того, какой желаемый выбор) и выдаю его в качестве окончательного результата. Тем не менее, я хочу посмотреть, есть ли способ сделать это без введения последнего MR для объединения A & B.