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 上に以下の 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'
- これらのファイルの行数をクエリします:
- これらの 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 スタイルのパーティショニングを検出し、クエリ内でパーティションカラムを仮想カラムとして使用できるようにします。これらの仮想カラムは、パーティション化されたパスと同じ名前ですが、_
で始まります。
例
Hive スタイルのパーティショニングで作成された仮想カラムを使用します。
ストレージ設定
- hdfs_truncate_on_insert - 挿入前にファイルを切り詰めることを許可します。デフォルトでは無効です。
- hdfs_create_new_file_on_insert - フォーマットにサフィックスがある場合、挿入ごとに新しいファイルを作成することを許可します。デフォルトでは無効です。
- hdfs_skip_empty_files - 読み取り時に空のファイルをスキップすることを許可します。デフォルトでは無効です。
関連情報