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.
настройка use_hive_partitioning
Когда настройка use_hive_partitioning установлена в 1, ClickHouse будет обнаруживать разделение в стиле Hive в пути (/name=value/) и позволит использовать колонки разделения в качестве виртуальных колонок в запросе. Эти виртуальные колонки будут иметь такие же имена, как в разделенном пути, но с _ в начале.
Пример
Используйте виртуальную колонку, созданную с разделением в стиле Hive
Настройки Хранилища
- hdfs_truncate_on_insert - позволяет обрезать файл перед вставкой в него. Отключено по умолчанию.
- hdfs_create_new_file_on_insert - позволяет создавать новый файл при каждой вставке, если формат имеет суффикс. Отключено по умолчанию.
- hdfs_skip_empty_files - позволяет пропускать пустые файлы во время чтения. Отключено по умолчанию.