Как обрабатывать дубликаты записей при импорте данных из RDMS в hadoop с использованием sqoop? - PullRequest
0 голосов
/ 23 января 2019

Предположим, что если мы используем инкрементальный импорт в sqoop для импорта данных из RDMS в Hadoop, а некоторые данные, которые мы уже импортировали в hadoop, ранее были обновлены в RDMS, и когда мы снова импортируем с использованием инкрементального импорта sqoop, мы также получим эти недавно обновленные данные, которые уже присутствовал в нашем Hadoop, что приводит к дублированию данных, так как мы можем избежать дублирования данных при импорте данных с использованием sqoop в таких сценариях?

1 Ответ

0 голосов
/ 27 января 2019

Hadoop записывается после подхода чтения много (WORM), а для инкрементальной загрузки требуется запланированная стратегия.Ниже приведены рекомендации, которым вы можете следовать и подтвердить свои текущие требования

  1. Если таблица небольшая (несколько тысяч записей) и не имеет слишком много столбцов, лучше обновить всю таблицу.Это будет работать быстрее и безопаснее.
  2. В случае, если таблица слишком велика и при инкрементальной загрузке выполняются операции добавления / обновления / удаления, вы можете подумать о постановке дельты и выполнить (левое внешнее) соединение, чтобы повторносоздать новый набор данных и вставить перезаписать.Убедитесь, что вы сохраняете местоположение истории для проверки.
  3. Существует третий подход, который также можно использовать для повышения производительности.Для большой таблицы и большой дельты вы можете создать номер версии, в то же время записывая и извлекая дату для каждой дельты и сохраняя ее в каталоге дельты.Объедините всю полную и дельта-загрузку и примените функцию ранга, чтобы увидеть последнюю запись сверху.Это также может быть достигнуто через представление.
...