2016-06-24 10 views
1

У меня есть таблица улья table_perm, у которой есть миллион строк. Ежедневные новые данные добавляются в эту таблицу из другой таблицы hive, table_temp.Поиск уникальных значений в таблице hive

Скажем таблицы, как показано ниже:

table_perm id,col2,col3,ts 1,a,b,t1 2,d,e,t1 3,g,h,t1 4,j,k,t2 5,a,e,t2 6,h,d,t2

table_temp id,col2,col3,ts 6,h,k,t3 7,d,r,t3 8,a,h,t3 9,t,q,t3

и мой окончательный вывод должен быть, id,col2,col3,ts 1,a,b,t1 2,d,e,t1 3,g,h,t1 4,j,k,t2 5,a,e,t2 6,h,k,t3 7,d,r,t3 8,a,h,t3 9,t,q,t3

так в основном Я должен проверить здесь, если идентификатор уникален, а затем добавить данные. Если идентификатор не уникален, добавьте последнюю запись.

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

P.S. : column ts - временная метка и инкрементное обновление происходит один раз в день. table_perm огромен.

+0

Что ваш вопрос? Правильно ли добавлены данные? –

+0

@GordonLinoff: обновил вопрос. – user2810706

ответ

0

Лучший способ сделать это Сделайте table_perm join table_temp на id. Затем выберите поля соответственно, проверив ts.

select table_perm.id,IF(table_perm.ts>table_temp.ts,table_perm.col2,table_temp.col2), IF(table_perm.ts>table_temp.ts,table_perm.col3,table_temp.col3) 
from table_perm join table_perm on table_perm.id=table_perm.id 

donn't Беспокойство о размере Data.Hive Для приложений Big Data

+0

Это делает весь процесс медленным ... Скажем, у меня 15 столбцов, проверка всех столбцов займет много времени. – user2810706

+0

Является ли ваше приложение обработкой в ​​реальном времени? Если это использование улья не является допустимым инструментом для вашего использования. Если это не реальное время, не беспокойтесь о данных и времени –

+0

Нет, мы не делаем обработку в реальном времени. Но эти данные поступают в таблицы представления, и мы делаем аналитику поверх SAS VA. Мы нацеливаем весь процесс на менее 10 минут. – user2810706

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