Monday, 1 April 2013

Пост 12. Плоский файл со смещением.

Доброго времени суток!
Иногда хочется обрабатывать всеми прелестями, которые предоставляет hadoop,  файлы не меняя их начальный формат (хочется его сохранить для других приложений, например).
Бывает такое, что исходным файлом будет плоский файл со смещением  (каждая колонка имеет фиксированное смещение относительно начала строки).
Например, есть файл, в котором имеются 4 колонки: первая это символы с 1 по 4, вторая с 5 по 10, третья с 11по 16, четвертая с 17 по 24.Как то так:
col1fieldfield2field#3
а хочется получить структуру вида:
col1       field      field2    field#3
Нет проблем – описываем следующую структуру:

create external table fixed_offset (a string,b string, c string,d string)
ROW FORMAT SERDE 'org.apache.hadoop.hive.contrib.serde2.RegexSerDe'
 WITH SERDEPROPERTIES
 (
 "input.regex" = "(.{4})(.{5})(.{6})(.{7}).*",
 "output.format.string" = "%1$s %2$s %3$s %4$s"
 )
 STORED AS TEXTFILE; 

И обращаемся через обычный select:
Select * from fixed_offset

No comments:

Post a Comment