使用方法
URI- HDFS 内のファイルの完全な URI。URIのパス部分にはグロブを含めることができます。この場合、テーブルは読み取り専用になります。format- 使用可能なファイルフォーマットのいずれか 1 つを指定します。SELECTクエリを実行するには、そのフォーマットが入力に対応している必要があり、INSERTクエリを実行するには 出力に対応している必要があります。使用可能なフォーマットは フォーマット セクションに一覧があります。- [PARTITION BY expr]
PARTITION BY
PARTITION BY — 任意です。ほとんどの場合、パーティションキーは不要です。必要な場合でも、通常は月単位より細かいパーティションキーは必要ありません。パーティション化してもクエリは高速化されません (ORDER BY 式とは異なります) 。細かすぎるパーティション化は絶対に避けてください。クライアント識別子や名前でデータをパーティション化しないでください (代わりに、クライアント識別子または名前を ORDER BY 式の最初のカラムにしてください) 。
月単位でパーティション化するには、toYYYYMM(date_column) 式を使用します。ここで、date_column は Date 型の日付カラムです。この場合のパーティション名は "YYYYMM" フォーマットになります。
例:
1. hdfs_engine_table テーブルを設定します。
実装の詳細
- 読み取りと書き込みは並列で実行できます。
- 次はサポートされていません。
ALTERおよびSELECT...SAMPLE操作。- 索引。
- ゼロコピー レプリケーションは利用できますが、推奨されません。
ゼロコピー レプリケーションは本番環境向けではありませんClickHouse バージョン 22.8 以降では、ゼロコピー レプリケーションはデフォルトで無効になっています。この機能を本番環境で使用することは推奨されません。
SELECT 実行時に決定されます (CREATE 時ではありません) 。
*— 空文字列を含む、/を除く任意の文字列に置き換えます。?— 任意の 1 文字に置き換えます。{some_string,another_string,yet_another_one}— 文字列'some_string'、'another_string'、'yet_another_one'のいずれかに置き換えます。{N..M}— N から M までの範囲内の任意の数値 (両端を含む) に置き換えます。
{} を使った構文は、remote table function に似ています。
例
-
HDFS 上に、次の URI を持つ TSV フォーマットのファイルがいくつかあるとします。
- ‘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’
- これら 6 つのファイルすべてからなるテーブルを作成する方法はいくつかあります。
ファイル一覧に先頭のゼロを含む数値範囲がある場合は、各桁ごとに波かっこを使う構文を使用するか、
? を使用してください。file000、file001、…、file999 という名前のファイルを持つテーブルを作成します。
設定
hdfs) とユーザーレベル (hdfs_*) です。まずグローバル設定が適用され、次にユーザーレベル設定が適用されます (存在する場合) 。
設定オプション
libhdfs3 でサポートされる設定
HDFS Configuration Reference を参照すると、一部のパラメーターについて理解しやすくなる場合があります。
ClickHouse の追加設定
制限事項
hadoop_security_kerberos_ticket_cache_pathとlibhdfs3_confはグローバル設定のみ可能で、ユーザーごとの設定には対応していません
Kerberos サポート
hadoop_security_authentication パラメータの値が kerberos の場合、ClickHouse は Kerberos による認証を使用します。
パラメータは こちら にあり、hadoop_security_kerberos_ticket_cache_path が役立つ場合があります。
libhdfs3 の制限により、サポートされるのは従来方式のみであることに注意してください。
datanode との通信は SASL では保護されません (HADOOP_SECURE_DN_USER は、このような
セキュリティ方式であることを示す信頼できる指標です) 。参考として tests/integration/test_storage_kerberized_hdfs/hdfs_configs/bootstrap.sh を使用してください。
hadoop_kerberos_keytab、hadoop_kerberos_principal、または hadoop_security_kerberos_ticket_cache_path のいずれかを指定すると、Kerberos 認証が使用されます。この場合、hadoop_kerberos_keytab と hadoop_kerberos_principal は必須です。
HDFS NameNode HA のサポート
- HDFS ノードから
hdfs-site.xmlを/etc/clickhouse-server/にコピーします。 - ClickHouse の設定ファイルに次の設定を追加します。
- 次に、HDFS URI の NameNode アドレスには、
hdfs-site.xmlのdfs.nameservicesのタグ値を使用します。たとえば、hdfs://appadmin@192.168.101.11:8020/abc/をhdfs://appadmin@my_nameservice/abc/に置き換えます。
仮想カラム
_path— ファイルのパス。型:LowCardinality(String)._file— ファイル名。型:LowCardinality(String)._size— ファイルサイズ (バイト単位) 。型:Nullable(UInt64)。サイズが不明な場合、値はNULLです。_time— ファイルの最終更新時刻。型:Nullable(DateTime)。時刻が不明な場合、値はNULLです。
ストレージ設定
- hdfs_truncate_on_insert - insert 前にファイルを切り詰められるようにします。デフォルトでは無効です。
- hdfs_create_new_file_on_insert - フォーマットに接尾辞がある場合、insert のたびに新しいファイルを作成できるようにします。デフォルトでは無効です。
- hdfs_skip_empty_files - 読み取り時に空のファイルをスキップできるようにします。デフォルトでは無効です。