2015-12-21 4 views
0

Я понимаю, что Sqoop предлагает несколько методов для обработки добавочного импортаApache Sqoop Инкрементального импорта

режим Append

LastModified режим

Вопросы по режиму Append:

  1. Поддерживается ли режим добавления только для столбца проверки как целочисленного типа данных? Что делать, если я хочу использовать дату или столбец временной метки, но все же я хочу только добавить данные уже в HDFS?

  2. Этот режим означает, что новые данные добавляются к существующему файлу HDFS или выбираются только новые данные из исходной базы данных или обоих?

  3. Допустим, что контрольный столбец является столбцом идентификатора в исходной таблице. Там уже существует строка в таблице, где столбец id равен 100. Когда импорт sqoop запускается в режиме добавления, где последнее значение равно 50. Теперь он импортирует все строки, где id> 50. При повторном запуске с последним значением, значение 150, но на этот раз строка с значением id как 100 была обновлена ​​до 200. Будет ли эта строка также вытащить?

Пример: Допустим, что есть таблица, называемая клиентами с одной из записей, как указано ниже. Первый столбец - это идентификатор.

100 а хуг 5000

Когда Sqoop задание выполняется в режиме добавления и последнее значение, как 50 для столбца идентификаторов, то он будет тянуть выше запись.

Теперь же запись изменяется и идентификатор также получает изменен (гипотетический пример, хотя) следующим образом

200 а хуг 6000

Если вы снова запустите команду sqoop, будет это тянуть выше запись, а был вопрос.

Вопросы по LastModified режиме:

  1. Похоже работает sqoop в этом режиме будет объединить существующие данные с новыми данными, используя 2 рабочих MR внутри. Что такое столбец, который использует sqoop для сравнения старого и нового для процесса слияния?

  2. Может ли пользователь указать столбец для процесса слияния?

  3. Может быть предоставлено более одного столбца, которое должно использоваться для процесса слияния?

  4. Должно ли target-dir существовать для процесса слияния, чтобы sqoop рассматривал существующий целевой каталог как старый набор данных? В противном случае, как Sqoop, какой старый набор данных должен быть объединен?

ответ

0

Ответы на режим добавления:

  1. Да, это должно быть целым числом

  2. Оба

  3. Вопрос не ясно.

Ответов на LastModified режима:

  1. Инкрементальной нагрузка не слияние данных с LastModified, это в первую очередь тянуть обновленные и вставленные данные, используя временную метку.

  2. Процесс слияния полностью отличается. Как только у вас есть как старые данные, так и новые данные, вы можете объединить новые данные в старые данные в другой каталог. Вы можете увидеть подробное объяснение here.

  3. процесс Merge работает только с одним полем

  4. целевой реж не должно существовать. Видео охватывает полный процесс слияния

+0

Для Q3 в режиме добавления я обновил исходный вопрос. Я думаю, что ответ еще и для этого. – learninghuman

+0

Я вижу это заявление из поваренной книги apache sqoop: «Внутри последний модифицированный инкрементный импорт состоит из двух автономных заданий MapReduce. Первое задание импортирует дельта измененных данных аналогично нормальному импорту. Это задание импорта будет сохранять данные во временном каталог на HDFS. Второе задание возьмет как старые, так и новые данные и объединит их вместе в окончательный вывод, сохранив только последнее обновленное значение для каждой строки ». – learninghuman

+0

Выяснилось, что для инкрементного режима с последними изменениями при условии, что ключ слияния с одним и тем же целевым типом, так как база приведет к 2 заданиям MR, а базовый каталог - объединенным. Однако история потеряна. – learninghuman

Смежные вопросы