2014-10-27 1 views
1

У меня есть набор данных, который использует двойные двоеточия (::) в качестве разделителя. Как я могу использовать regex serde в Hive для анализа данных, чтобы их можно было импортировать в таблицу?как использовать regex serde for :: как разделитель в файле

структура данных, как показано ниже:

userId::movieId::rating::time 

В настоящее время я использую этот запрос, но он дает аннулирует для отдельных утверждений:

create table rating_regex(userId string,movieId string,rating string,time string) row format serde 'org.apache.hadoop.hive.contrib.serde2.RegexSerDe' with serdeproperties(
"input.regex" = "::" 
) stored as textfile 

ответ

4

Вы должны создать полное регулярное выражение для всей запись, а затем объявить выходной формат.

Пример:

CREATE TABLE rating_regex(
    userId string, 
    movieId string, 
    rating string, 
    time string) 
ROW FORMAT SERDE 'org.apache.hadoop.hive.contrib.serde2.RegexSerDe' 
WITH serdeproperties("input.regex" = "(.+)::(.+)::(.+)::(.+)", 
"output.format.string" = "%1$s %2$s %3$s %4$s") 
STORED AS TEXTFILE; 
+0

спасибо JamCon и Congrats для 1K. –

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