Использование Hadoop для обновления MySQL - PullRequest
2 голосов
/ 17 мая 2011

Я использую мои редукторы для ввода данных в MySQL.Меня беспокоит то, что в некоторых случаях несколько редукторов запускаются для одного и того же ключа одновременно.В этом случае есть вероятность, что БД может быть обновлена ​​дважды по одним и тем же данным.Есть ли способ защиты от этого?

Имеет ли смысл в этом случае отключать режим автоматической фиксации в соединении SQL?

Ответы [ 3 ]

1 голос
/ 17 мая 2011

Вы можете изменить настройку:

mapred.reduce.tasks.speculative.execution

Это отключит спекулятивное выполнение задач сокращения, если это ваш случай.

Другой способ, который я бы предложил, - использовать Sqoop для записи вMySQL: http://archive.cloudera.com/cdh/3/sqoop/SqoopUserGuide.html#_literal_sqoop_export_literal

0 голосов
/ 18 мая 2011

Нашел решение ... это отключало умозрительное исполнение

0 голосов
/ 17 мая 2011

Я думаю, что эта ситуация не имеет ничего общего с автокоммитами. Если они не слишком большие и не требуют значительных накладных расходов, игнорируйте их, потому что они не нарушат последовательность. Все ваши редукторы делают для выполнения запросов SQL, как вы можете запретить им выполнять запросы для тех же ключей? Я думаю, что вы должны решить эту проблему в своей функции mapreduce, потому что это не тот случай, когда СУБД может справиться, поскольку все, что она делает, это выполняет данный запрос в базе данных.

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