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 - позволяет пропускать пустые файлы при чтении. По умолчанию отключено.
См. также