2013-04-19 3 views
3

Я в настоящее время импортирую из Mysql в HDFS, используя Sqoop в формате avro, это отлично работает. Однако каким образом можно загрузить эти файлы в HIVE?Sqoop, Avro и Hive

Поскольку файлы avro содержат схему, я могу вытащить файлы в локальную файловую систему, использовать инструменты avro и создать таблицу с извлеченной схемой, но это кажется чрезмерным?

Также, если столбец удаляется из таблицы в mysql, я могу загрузить старые файлы в новую таблицу HIVE, созданную с помощью новой схемы avro (отсутствовал столбец столбца)?

ответ

3

После версии 9.1, Hive поставляется в комплекте с Avro Hive SerDe. Это позволяет Hive читать файлы Avro непосредственно, пока Avro все еще «владеет» схемой.

Для вас второй вопрос, вы можете определить схему Avro со значениями по умолчанию в столбцах. Когда вы добавляете новый столбец, обязательно указывайте значение по умолчанию, и все ваши старые файлы Avro будут работать только в новой таблице Hive.

Для начала, вы можете найти в документации here и книга Программирование улого (доступное на Safari Books Online) имеет section on the Avro HiveSerde которые вы можете найти более удобными для чтения.

+0

Неужели мне еще нужно предоставить схему в TBLPROPERTIES, когда я создаю таблицу? –

+0

Да. Улей должен знать схему раньше времени. Схема, указанная в параметрах tableproperties, должна быть совместима с всеми схемами, которые столбец встретит. –

+0

Откуда берется файл схемы? Если я импортирую некоторые данные с помощью Sqoop, я могу увидеть схему в заголовке файлов данных, но я не вижу никакого внешнего файла схемы в каталоге данных. Что я должен указать для TBLPROPERTIES? –

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