Hive - Как я могу написать оператор создания для существующего файла hdfs переменной длины? - PullRequest
0 голосов
/ 12 мая 2011

Итак, у меня есть каталог hdfs, содержащий кучу файлов.Все эти файлы разделены табуляцией.

У меня есть оператор улья ....

create external table
   mytable(
      key string,
      name string,
      address string,
      ssn string)
row format delimited fields
terminated by '09', lines terminted by '10'
STORED AS TEXTFILE location '/MyHiveFiles/data';

Это работает довольно хорошо, за исключением всех дополнительных полей.Файл также содержит от 0 до x дополнительных элементов данных после поля ssn.Они по-прежнему разделены табуляцией, а запись '\ n' разделена.Я мог бы добавить группу 'valuex string' (где x - приращение дополнительных элементов) ... но я не знаю, сколько их в конечном итоге может быть, и это в любом случае кажется грязным.

Есть лиспособ сказать hive просто поместить все оставшиеся поля этой строки в ОДНОЕ поле, как «строка других»?Даже если это разделитель табуляции в возвращаемом значении улья ... Я согласен с этим.

Спасибо, заранее.

1 Ответ

1 голос
/ 12 мая 2011

Создание таблицы в Hive, по сути, просто создает метаданные, указывающие кусту, как интерпретировать файлы.Hive не «знает» об остальных данных.

Если вы добавите другой столбец в качестве массива и укажите COLLECTION ITEMS TERMINATED BY '\0002' (\ 0002 или какой-либо другой символ), то вкладки не прекратят сбор массиваи все должны быть возвращены как один элемент, включая вкладки.Еще не проверял это.:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...