2015-06-15 5 views
0

При вводе «внешних» данных в Hive, что является лучшим способом проверить, что он «чистый»? Мы не хотим, чтобы какие-либо недопустимые значения попадали в нашу таблицу Hive.Улей: проверка данных/обработка плохих данных?

Например, если поле в исходных данных должно содержать допустимую дату, но формат является неправильным (например: «Я» был введен пользователем-пользователем, а не одним), как мы это обнаружим?

У нас есть 20I5-06-09 в исходных данных вместо 2015-06-09.

Еще сложнее, что, если формат в порядке, но это не действительная дата; например, исходные данные содержат 2015-02-30, но мы не хотим этого, потому что февраль не может иметь 30 дней.

ответ

0

Вы можете подтвердить использование встроенной функции ульи to_date, которая будет возвращать NULL на первый вид плохих данных:

hive> select to_date('2015-02-02'),to_date('20I5-02-02'); 

2015-02-02  NULL  

Для Вашего второго рода плохих данных, что делает что-то еще интересно, хотя ... Я думаю, что это возможно, должен быть поднят как ошибка.

hive> select to_date('2015-02-30'); 

2015-03-02 

Чтобы обойти эту проблему, вы могли бы сделать

select case when datecol = to_date(datecol) then datecol end 
+0

Спасибо за это предложение; Я дам ему попробовать! – talkietoaster

0

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

  1. Подтвердите данные перед тем, как нажимать их на HDFS.
  2. Если данные уже находятся в HDFS, запустите задание MapReduce, отфильтровывая или фиксируя любые плохие записи. Затем загрузите в Улей. Все это можно было бы автоматизировать с помощью Oozie.
+0

Итак, вы бы рекомендовали использовать что-то другое, кроме самого Hive, для проверки данных? Я рассмотрел использование shell scripting + awk, потому что у меня много опыта с ними. У меня также есть опыт Java, так что это будет другой вариант. Причина моего первоначального вопроса заключается в том, что руководство запросило «Hive only» для этого проекта. Однако, если Hive действительно плохо подходит для процесса проверки, мы можем сообщить им, что это не рекомендуется. – talkietoaster

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