2016-01-04 2 views
-1

Предположим, что в любой реляционной базе данных есть таблица под названием T1 со 100 + столбцами. I sqoop импортирует эту таблицу в HDFS как CSV.Импорт Sqoop - изменение схемы исходной таблицы

Теперь еще 10 столбцов добавлены в таблицу T1. Если я импортирую эти данные в HDFS, новые данные будут содержать еще 10 столбцов, чем раньше.

Вопросы:

  1. Как sqoop заказ столбцы импортируется, так что старые и новые данные (по крайней мере для столбцов до изменения в T1) находятся в правильных положениях?

  2. С новыми столбцами эти столбцы всегда импортируются в конце?

  3. Что делать, если столбец удаляется? Как справиться с этой ситуацией, то есть как старые данные и новые данные сохраняют позиции?

ответ

1

Как sqoop заказ колонны импортируется, так что старые и новые данные (по крайней мере для столбцов до изменения в T1) находятся в правильных положениях?

Все инструменты на основе Hadoop не применяют схему при записи данных в HDFS. По умолчанию он не будет пытаться обновлять старые данные новыми полями. Sqoop не знает о столбцах данных в HDFS. Для новых данных все зависит от того, как вы пишете команду импорта sqoop. Если вы используете предложение --table с предложением --columns, тогда данные будут соответствовать порядку источника. Если вы выдаете предложение --query, чтобы предоставить пользовательский запрос для извлечения данных, порядок будет основываться на порядке столбца предложения select в запросе. Если вы не хотите явно упоминать имена столбцов как часть импорта sqoop, вы можете рассмотреть возможность создания представления в исходной базе данных.

С новыми столбцами эти столбцы всегда импортируются в конце?

Не обязательно, как я уже объяснял ранее

Что делать, если столбец будет удален? Как справиться с этой ситуацией, то есть как старые данные и новые данные сохраняют позиции?

Если столбцы удалены, скорее всего, вам необходимо перезагрузить данные или обработать их во время обработки, основываясь на определенных правилах. Лучший подход - перезагрузить данные или создать представление в исходной базе данных.

Это не ограничения для него, это стандартные проблемы, требующие индивидуального решения независимо от используемой вами технологии. Проблема слишком общая, и, следовательно, получение API для нее может оказаться невозможным.

+0

Я понимаю, что hadoop - это схема на чтение; Q1 и Q2: Мой вопрос касается порядка столбцов и количества исходных столбцов. Если в запросе указано слишком много столбцов, просто задается вопросом, есть ли опции для сохранения порядка каким-либо образом без явного указания столбцов с помощью некоторой функции db. И на Q3, может быть, мы можем вставить пустую строку в запрос выбора для столбца, который удаляется, чтобы избежать перезагрузки? – learninghuman

+0

Если вы ищете БД, вы можете создать представление в исходной базе данных и просмотреть представление с помощью таблицы. В поле зрения вы можете определить порядок. –

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