メインコンテンツまでスキップ
メインコンテンツまでスキップ

hdfs テーブル関数

HDFS 内のファイルからテーブルを作成します。このテーブル関数は、url および file テーブル関数に似ています。

構文

引数

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

戻り値

指定された構造のテーブルが、指定されたファイルのデータを読み書きするために返されます。

hdfs://hdfs1:9000/test からのテーブルと、その最初の 2 行の選択:

パス内のグロブ

パスはグロビングを使用することができます。ファイルは、サフィックスやプレフィックスだけでなく、全パスパターンに一致する必要があります。

  • */ を除く任意の文字を任意の数(空文字を含む)を表します。
  • ** — フォルダー内の全ファイルを再帰的に表します。
  • ? — 任意の 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. これらのファイルの行数をクエリします:
  1. これらの 2 つのディレクトリ内のすべてのファイルの行数をクエリします:
注記

ファイルのリストに先頭ゼロのある数値範囲が含まれている場合は、各桁を別々に波括弧を使って構文を使用するか、? を使用してください。

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 - 読み込み中に空のファイルをスキップできます。デフォルトでは無効です。