2012-03-12 5 views
0

Я пытаюсь запустить запрос куста для фильтрации недопустимых записей. Вот что я делаю 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; 

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

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

ответ

0

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

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

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

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