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