Skip to main content
Edit this page

hdfsCluster テーブル関数

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

構文

hdfsCluster(cluster_name, URI, format, structure)

引数

  • cluster_name — リモートおよびローカルサーバーへのアドレスと接続パラメータのセットを構築するために使用されるクラスタの名前。
  • URI — ファイルまたは複数のファイルへのURI。読み取り専用モードで次のワイルドカードをサポートします: *, **, ?, {'abc','def'} および {N..M} ここで N, M — 数値, abc, def — 文字列。詳細はパス内のワイルドカードを参照してください。
  • 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')
Note

ファイルのリストに先頭ゼロが付いた数値範囲が含まれている場合、各桁を個別に中括弧で囲むか、? を使用します。

参照