指定したクラスター内の多数のノードから、HDFS 内のファイルを並列に処理できます。イニシエーターでは、クラスター内のすべてのノードとの 接続 を確立し、HDFS のファイルパス内のアスタリスクを展開して、各ファイルを動的に割り当てます。ワーカーノードでは、次に処理する task をイニシエーターに問い合わせて処理します。これを、すべての tasks が完了するまで繰り返します。
構文
hdfsCluster(cluster_name, URI, format, structure)引数
| 引数 | 説明 |
|---|---|
cluster_name |
リモートおよびローカルのサーバーのアドレスセットと接続パラメーターの構築に使用されるクラスター名。 |
URI |
1 つのファイル、または複数のファイルを指す URI。読み取り専用モードでは、次のワイルドカードをサポートします: *, **, ?, {'abc','def'}、{N..M}。ここで、N、M は数値、abc、def は文字列です。詳細は パス内のワイルドカード を参照してください。 |
format |
ファイルの フォーマット。 |
structure |
テーブルの構造。フォーマットは 'column1_name column1_type, column2_name column2_type, ...' です。 |
戻り値
指定されたファイル内のデータを読み取るための、指定された構造のテーブル。
例
cluster_simpleという名前の ClickHouse クラスターがあり、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'
- これらのファイルの行数をクエリします。
SELECT count(*)
FROM hdfsCluster('cluster_simple', 'hdfs://hdfs1:9000/{some,another}_dir/some_file_{1..3}', 'TSV', 'name String, value UInt32')- これら2つのディレクトリ内にあるすべてのファイルの行数をクエリします:
SELECT count(*)
FROM hdfsCluster('cluster_simple', 'hdfs://hdfs1:9000/{some,another}_dir/*', 'TSV', 'name String, value UInt32')