Как сохранить плоский файл в HDFS в синхронизации с большой таблицей базы данных? - PullRequest
2 голосов
/ 01 апреля 2011

Каков наилучший способ синхронизации плоского файла в HDFS с большой таблицей базы данных, в которой могут быть обновления строк?

Такие инструменты, как sqoop, кажутся полезными, поскольку они позволяют постепенно извлекать новые строки из таблиц, однако я не вижу простого способа обработки обновлений строк.

Какие методы мы можем использовать для эффективной обработки обновлений строк? Ночной дамп целых таблиц - это то, чего мы бы лучше избегали.

Ответы [ 2 ]

1 голос
/ 01 апреля 2011

Вот пара предложений:

  • Используйте DBInputFormat, чтобы сделать базу данных входом для ваших заданий, вместо того, чтобы иметь промежуточный файл, о котором вам нужно беспокоиться о синхронизации. Если MySQL становится узким местом, вы можете использовать некоторую распределенную / NoSQL базу данных.
  • Если вы все еще хотите использовать плоские файлы, каждую ночь вы можете записывать только те строки, которые изменились в MySQL, вместе с отметкой времени. Напишите задание Hadoop, которое выводит только самую последнюю версию каждой уникальной строки.
1 голос
/ 01 апреля 2011

Я предпочитаю иметь поле updated_at в таблице mysql, чтобы получать измененные данные только каждую ночь. После этого я делаю простое сокращение карты, чтобы применить изменения к старому состоянию (объединить с).

...