Функция таблицы hdfs
Создает таблицу из файлов в HDFS. Эта функция таблицы аналогична функциям таблиц url и file.
Входные параметры
URI— Относительный URI к файлу в HDFS. Путь к файлу поддерживает следующие шаблоны в режиме только для чтения:*,?,{abc,def}и{N..M}, гдеN,M— числа, а `'abc', 'def'— строки.format— формат файла.structure— Структура таблицы. Формат'column1_name column1_type, column2_name column2_type, ...'.
Возвращаемое значение
Таблица с указанной структурой для чтения или записи данных в заданный файл.
Пример
Таблица из hdfs://hdfs1:9000/test и выбор первых двух строк из нее:
Шаблоны в пути
Пути могут использовать шаблоны. Файлы должны соответствовать всему шаблону пути, а не только суффиксу или префиксу.
*— Представляет произвольное количество символов, кроме/, включая пустую строку.**— Представляет все файлы внутри папки рекурсивно.?— Представляет произвольный одиночный символ.{some_string,another_string,yet_another_one}— Заменяет любую из строк'some_string', 'another_string', 'yet_another_one'. Строки могут содержать символ/.{N..M}— Представляет любое число>= Nи<= M.
Конструкции с {} аналогичны функциям таблиц remote и file.
Пример
- Предположим, у нас есть несколько файлов со следующими URI в HDFS:
- 'hdfs://hdfs1:9000/some_dir/some_file_1'
- 'hdfs://hdfs1:9000/some_dir/some_file_2'
- 'hdfs://hdfs1:9000/some_dir/some_file_3'
- 'hdfs://hdfs1:9000/another_dir/some_file_1'
- 'hdfs://hdfs1:9000/another_dir/some_file_2'
- 'hdfs://hdfs1:9000/another_dir/some_file_3'
- Запросите количество строк в этих файлах:
- Запросите количество строк во всех файлах этих двух директории:
Если ваш список файлов содержит диапазоны чисел с ведущими нулями, используйте конструкцию с фигурными скобками для каждой цифры отдельно или используйте ?.
Пример
Запросите данные из файлов с именами file000, file001, ... , file999:
Виртуальные колонки
_path— Путь к файлу. Тип:LowCardinality(String)._file— Имя файла. Тип:LowCardinality(String)._size— Размер файла в байтах. Тип:Nullable(UInt64). Если размер неизвестен, значение равноNULL._time— Время последнего изменения файла. Тип:Nullable(DateTime). Если время неизвестно, значение равноNULL.
Разделение по стилю Hive
При установке use_hive_partitioning равным 1, ClickHouse обнаружит разделение по стилю Hive в пути (/name=value/) и позволит использовать колонки партиции в запросе в качестве виртуальных колонок. Эти виртуальные колонки будут иметь такие же имена, как в разделенном пути, но начнутся с _.
Пример
Используйте виртуальную колонку, созданную с использованием разделения по стилю Hive
Настройки хранения
- hdfs_truncate_on_insert - позволяет обрезать файл перед вставкой в него. По умолчанию отключено.
- hdfs_create_new_file_on_insert - позволяет создавать новый файл при каждой вставке, если формат имеет суффикс. По умолчанию отключено.
- hdfs_skip_empty_files - позволяет пропускать пустые файлы при чтении. По умолчанию отключено.
См. также