hdfs テーブル関数
HDFS内のファイルからテーブルを作成します。このテーブル関数は、urlおよびfileテーブル関数に似ています。
構文
引数
引数 | 説明 |
---|---|
URI | HDFS内のファイルへの相対URI。ファイルへのパスは、読み取り専用モードで以下のグロブをサポートします:* , ? , {abc,def} および{N..M} 、ここでN 、M は数字、'abc' , 'def' は文字列です。 |
format | ファイルのフォーマット。 |
structure | テーブルの構造。フォーマットは 'column1_name column1_type, column2_name column2_type, ...' です。 |
戻り値
指定された構造のテーブルが、指定されたファイルからデータを読み書きするために返されます。
例
hdfs://hdfs1:9000/test
のテーブルと、そこから最初の2行を選択します:
パス内のグロブ
パスはグロブを使用できます。ファイルは、接尾辞や接頭辞だけでなく、全パスパターンに一致する必要があります。
*
—/
を除く任意の多くの文字を表し、空文字列を含みます。**
— フォルダーの中のすべてのファイルを再帰的に表します。?
— 任意の単一の文字を表します。{some_string,another_string,yet_another_one}
— 文字列'some_string', 'another_string', 'yet_another_one'
のいずれかに置き換えます。文字列は/
記号を含むことができます。{N..M}
—>= N
および<= M
の任意の数を表します。
{}
を用いた構文は、remoteおよびfileテーブル関数に似ています。
例
- HDFS上に次のURIsを持ついくつかのファイルがあるとします:
- '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'
- これらのファイルの行数をクエリします:
- これらの2つのディレクトリ内のすべてのファイルの行数をクエリします:
注記
ファイルのリストに先頭ゼロを持つ番号範囲が含まれる場合は、各桁ごとに波括弧で構成を使用するか、?
を使用してください。
例
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 - 読み取り中に空のファイルをスキップすることを許可します。デフォルトでは無効です。