メインコンテンツへスキップ
HDFS 内のファイルからテーブルを作成します。このテーブル関数は、url および file のテーブル関数に似ています。

構文

hdfs(URI, format, structure)

引数

引数説明
URIHDFS 内のファイルへの相対 URI。ファイルパスでは、読み取り専用モードで次のグロブを使用できます: *, ?, {abc,def}{N..M}。ここで、NM は数値、'abc''def' は文字列です。
formatファイルのフォーマット
structureテーブルの構造。形式は 'column1_name column1_type, column2_name column2_type, ...' です。

戻り値

指定したファイル内のデータを読み書きするための、指定した構造のテーブル。 hdfs://hdfs1:9000/test にあるテーブルと、そこから先頭2行を選択する例:
SELECT *
FROM hdfs('hdfs://hdfs1:9000/test', 'TSV', 'column1 UInt32, column2 UInt32, column3 UInt32')
LIMIT 2
┌─column1─┬─column2─┬─column3─┐
│       1 │       2 │       3 │
│       3 │       2 │       1 │
└─────────┴─────────┴─────────┘

path 内のグロブ

パスではグロブを使用できます。ファイルは、接尾辞やプレフィックスだけでなく、パターン全体のパスに一致する必要があります。
  • * — 空文字列を含み、/ を除く任意の長さの文字列を表します。
  • ** — フォルダー内のすべてのファイルを再帰的に表します。
  • ? — 任意の 1 文字を表します。
  • {some_string,another_string,yet_another_one}'some_string''another_string''yet_another_one' のいずれかの文字列に展開されます。これらの文字列には / 記号を含めることができます。
  • {N..M}>= N かつ <= M の任意の数値を表します。
{} を使った構文は、remote および file テーブル関数と似ています。
  1. HDFS 上に次の URI を持つファイルがいくつかあるとします。
  • ‘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. これらのファイルの行数を取得します。
SELECT count(*)
FROM hdfs('hdfs://hdfs1:9000/{some,another}_dir/some_file_{1..3}', 'TSV', 'name String, value UInt32')
  1. これら2つのディレクトリ内のすべてのファイルの行数を確認します:
SELECT count(*)
FROM hdfs('hdfs://hdfs1:9000/{some,another}_dir/*', 'TSV', 'name String, value UInt32')
ファイル一覧に先頭がゼロの数値範囲が含まれる場合は、各桁ごとに波括弧を使った構文を使用するか、? を使用してください。
file000file001、…、file999 という名前のファイルからデータを取得します:
SELECT count(*)
FROM hdfs('hdfs://hdfs1:9000/big_dir/file{0..9}{0..9}{0..9}', 'CSV', 'name String, value UInt32')

仮想カラム

  • _path — ファイルのパス。型: LowCardinality(String)
  • _file — ファイル名。型: LowCardinality(String)
  • _size — ファイルサイズ (バイト単位) 。型: Nullable(UInt64)。サイズが不明な場合、値は NULL です。
  • _time — ファイルの最終更新時刻。型: Nullable(DateTime)。時刻が不明な場合、値は NULL です。

use_hive_partitioning 設定

use_hive_partitioning を 1 に設定すると、ClickHouse はパス (/name=value/) 内の Hive スタイルのパーティション化を検出し、クエリでパーティションカラムを仮想カラムとして使用できるようになります。これらの仮想カラムには、パーティション化されたパス内と同じ名前が付きます。 Hive スタイルのパーティション化で作成された仮想カラムを使用する
SELECT * FROM HDFS('hdfs://hdfs1:9000/data/path/date=*/country=*/code=*/*.parquet') WHERE date > '2020-01-01' AND country = 'Netherlands' AND code = 42;

ストレージ設定

  • hdfs_truncate_on_insert - insert 前にファイルを切り詰めることを許可します。デフォルトでは無効です。
  • hdfs_create_new_file_on_insert - フォーマットに接尾辞がある場合、insert のたびに新しいファイルを作成することを許可します。デフォルトでは無効です。
  • hdfs_skip_empty_files - 読み取り時に空のファイルをスキップすることを許可します。デフォルトでは無効です。
最終更新日 2026年6月10日