メインコンテンツへスキップ
メインコンテンツへスキップ

hdfsCluster テーブル関数

指定したクラスター内の複数ノードから、HDFS 上のファイルを並列に処理できます。イニシエーターでは、クラスター内のすべてのノードへの接続を確立し、HDFS のファイルパスに含まれるアスタリスクを展開して、各ファイルを動的に振り分けます。ワーカーノードでは、処理すべき次のタスクをイニシエーターに問い合わせ、そのタスクを処理します。これは、すべてのタスクが完了するまで繰り返されます。

構文

hdfsCluster(cluster_name, URI, format, structure)

引数

引数説明
cluster_nameリモートおよびローカルサーバーへのアドレスと接続パラメータの集合を構成するために使用されるクラスター名。
URI1 つまたは複数のファイルを指す URI。読み取り専用モードで次のワイルドカードをサポートします: *, **, ?, {'abc','def'} および {N..M}。ここで N, M は数値、abc, def は文字列です。詳細は Wildcards In Path を参照してください。
formatファイルのフォーマット
structureテーブルの構造。形式: 'column1_name column1_type, column2_name column2_type, ...'

返される値

指定した構造を持ち、指定したファイル内のデータを読み取るためのテーブル。

  1. 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'
  1. これらのファイル内の行数をクエリで取得します:
SELECT count(*)
FROM hdfsCluster('cluster_simple', 'hdfs://hdfs1:9000/{some,another}_dir/some_file_{1..3}', 'TSV', 'name String, value UInt32')
  1. これら 2 つのディレクトリ内にあるすべてのファイルの行数をクエリします。
SELECT count(*)
FROM hdfsCluster('cluster_simple', 'hdfs://hdfs1:9000/{some,another}_dir/*', 'TSV', 'name String, value UInt32')
注記

ファイル一覧に先頭ゼロ付きの数値範囲が含まれている場合は、各桁を個別に波かっこで囲む構文を用いるか、? を使用してください。