Чтобы ответить на ваши вопросы:
1) Если у вас есть пользовательские критерии проверки, UDF, вероятно, вам подходит. Если бы я делал это, я бы создал UDF is_valid, который возвращает логическое значение (вместо возврата NULL против не NULL).
2) Да, UDF запускается дважды.
3) Рад, что ты спросил. Посмотрите на функцию explode , доступную в Hive