| Ввод | Вывод | Псевдоним |
|---|---|---|
| ✔ | ✗ |
Описание
HiveText читает формат текстовой сериализации, используемый таблицами
Apache Hive (формат, создаваемый LazySimpleSerDe
в Hive). Это текстовый формат с разделителями, похожий на CSV, в котором поля
разделяются стандартным для Hive разделителем \x01 (Ctrl-A). Разделитель полей
можно настроить через input_format_hive_text_fields_delimiter.
HiveText — это формат только для ввода. У данных нет строки заголовка: значения
сопоставляются со столбцами целевой таблицы по позиции, поэтому имена столбцов и типы
берутся из таблицы (или из явно заданной
структуры), а не определяются автоматически по данным. При чтении ClickHouse разбирает
даты и время в режиме best-effort (см. date_time_input_format),
заполняет пропущенные конечные поля значениями по умолчанию для столбцов и пропускает поля, которые не
распознаёт.
Внутри поля значения разбираются по тем же правилам экранирования, что и в CSV, а не
с использованием вложенных разделителей Hive. В частности, столбец типа
Array читается из представления
в квадратных скобках (например, "['a','b','c']"), а не из значений, разделённых
разделителем коллекции Hive \x02.
Настройки вложенных разделителей не действуютНастройки
input_format_hive_text_collection_items_delimiter и
input_format_hive_text_map_keys_delimiter
принимаются для совместимости, но в настоящее время не используются при разборе.input_format_hive_text_allow_variable_number_of_columns):
в строках, где полей меньше, чем в таблице, отсутствующие столбцы заполняются
значениями по умолчанию, а в строках с лишними конечными полями лишние поля пропускаются.
Пример использования
,) с помощью
input_format_hive_text_fields_delimiter, чтобы входные
файлы было удобнее читать.
Чтение файла в формате HiveText
hive_data.txt с полями, разделёнными запятыми:
hive_data.txt
FORMAT HiveText:
Query
Response
1,3 содержит только два поля, поэтому отсутствующий столбец c
заполняется значением по умолчанию 0.
Переменное количество столбцов
input_format_hive_text_allow_variable_number_of_columns = 1
у строк, содержащих больше полей, чем предусмотрено в таблице, лишние поля в конце
просто пропускаются:
hive_extras.txt
Query
Response
input_format_hive_text_allow_variable_number_of_columns = 0 вместо этого
требует строгого количества полей, и если в строке полей меньше, чем в таблице, возникает
исключение при разборе.
Настройки формата
| Setting | Description | Default |
|---|---|---|
input_format_hive_text_fields_delimiter | Разделитель между полями в Hive Text File | \x01 |
input_format_hive_text_collection_items_delimiter | Разделитель между элементами коллекции (массива или map) в Hive Text File. Принимается, но в настоящее время не используется при разборе. | \x02 |
input_format_hive_text_map_keys_delimiter | Разделитель между ключом и значением в map в Hive Text File. Принимается, но в настоящее время не используется при разборе. | \x03 |
input_format_hive_text_allow_variable_number_of_columns | Игнорировать лишние столбцы во входных данных Hive Text (если в файле больше столбцов, чем ожидается) и использовать значения по умолчанию для отсутствующих полей | 1 |