TextInputFormat vs HiveIgnoreKeyTextOutputFormat - PullRequest
0 голосов
/ 16 марта 2019

Я только начинаю с Hive, и у меня есть вопрос о формате ввода / вывода. Я использую OpenCSVSerde serde, но я не понимаю, почему для текстовых файлов формат ввода org.apache.hadoop.mapred.TextInputFormat, а формат вывода org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat.

Я прочитал этот вопрос , но мне все еще не ясно, почему форматы ввода / вывода отличаются. Разве это не говорит о том, что вы собираетесь хранить данные, добавленные в эту таблицу иначе, чем данные, считанные из таблицы ??

В любом случае, любая помощь будет признательна

1 Ответ

0 голосов
/ 18 марта 2019

В TextInputFormat ключи - это позиция в файле (длинный тип данных), а значения - строка текста. Когда программа читает файл, она может использовать ключи для случайного чтения, где при записи текстовых данных с использованием HiveIgnoreKeyTextOutputFormat нет значения для сохранения позиции, поскольку это не имеет смысла.

Следовательно, использование HiveIgnoreKeyTextOutputFormat передает ключи как нулевые для подчеркивания RecordWriter. Когда RecordWriter получает ключ как ноль, он игнорирует ключ и просто записывает значение с разделителем строк. В противном случае RecordWriter будет вводить ключ, затем разделитель, затем значение и, наконец, разделитель строк.

...