2015-03-26 4 views
1

У меня есть две таблицы hive, одна с большим количеством столбцов, а другая - с некоторыми соответствующими столбцами, некоторые из которых не совпадают.Вставьте данные в выбранные столбцы в HIVE из другой таблицы

Я хочу, чтобы иметь возможность вставлять данные из первой таблицы и указать столбцы, чтобы вставить его в, например:

Таблица 1 (фрукты): Яблокиструнные, Апельсиныстрока, Грушиструнные, Виноградул ing, Kiwistring;

Таблица 2 (fruitAndVeg): грушстроковые, МорковьСтрока, кивистрока;

Я хочу вставить заявление близко к следующему:

insert overwrite table fruitAndVeg x (x.Pears, x.kiwi) select y.Pears, y.kiwi from fruit y; 

Я знаю, что приведенный ниже код можно, но у меня есть гораздо больше данных в моих таблицах таким образом пытаясь указать столбцы, а не вставлять аннулирует или пустые строки вручную:

insert overwrite table fruitAndVeg select y.Pears, emptystring, y.kiwi from fruit y; 

Любая помощь приветствуется.

NB. Можно также использовать Impala, если это проще.

+0

Я не понимаю, почему ваш первый SQL недостаточно. – Amos

ответ

2

Будьте внимательны при использовании функции «Вставить переписать», поскольку она заменит любые существующие данные в вашей таблице. Как вы сказали, одна из таблиц состоит из большого количества данных.

Coming на свой вопрос, вы можете сделать следующее:

Вставьте в таблицу fruitandveg (груши, киви) отборных груши, киви из фруктов;

Будьте осторожны с корпусом (предпочтительный строчный регистр) груш и киви во вставке в пункт, поскольку улей чувствителен к регистру.

+0

Это не работает в Hive, потому что не позволяет указывать столбцы для вставки. –

+0

это действительно позволяет. Пожалуйста, ознакомьтесь с руководствами cwiki. –

+1

Я провел довольно много времени на страницах DSL на языке Hive, и нет возможности перечислить имена столбцов для «insert overwrite». Синтаксис, который вы упомянули, предназначен только для таблиц ACID, и он несовместим с «insert overwrite». –

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