Перейти к основному содержимому
Перейти к основному содержимому

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 табличным функциям.

Пример

  1. Предположим, что у нас есть несколько файлов со следующими 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'
  1. Запрос количества строк в этих файлах:
  1. Запрос количества строк во всех файлах этих двух директорий:
примечание

Если в вашем списке файлов есть диапазоны чисел с ведущими нулями, используйте конструкцию с фигурными скобками для каждой цифры отдельно или используйте ?.

Пример

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

Смотрите также