Hive: вставка в несколько таблиц на основе результатов запроса - PullRequest
0 голосов
/ 12 марта 2012

Я пытаюсь выполнить запрос улья, чтобы отфильтровать недействительные записи.Вот что я делаю 1. Загрузите CSV-файл в таблицу с одним столбцом.2. определить UDF my_validation для проверки каждой записи 3. выполнить запрос

from pgstg INSERT OVERWRITE LOCAL DIRECTORY '/tmp/validrecords.out'  
select * where  my_validation(record) IS NOT NULL
INSERT OVERWRITE TABLE PGERR
select record where  my_validation(record) IS  NULL;

Вот мои вопросы: a.Есть ли лучший способ отфильтровать недействительные записи;б.UDF my_validation работает дважды на всей таблице?с.Каков наилучший способ разбить один столбец на несколько столбцов.

Большое спасибо за вашу помощь.

1 Ответ

1 голос
/ 25 апреля 2012

Чтобы ответить на ваши вопросы:

1) Если у вас есть пользовательские критерии проверки, UDF, вероятно, вам подходит. Если бы я делал это, я бы создал UDF is_valid, который возвращает логическое значение (вместо возврата NULL против не NULL).

2) Да, UDF запускается дважды.

3) Рад, что ты спросил. Посмотрите на функцию explode , доступную в Hive

...