メインコンテンツまでスキップ
メインコンテンツまでスキップ

clickhouse-local

clickhouse-local と ClickHouse の使い分け

clickhouse-local は、ローカルおよびリモートファイルに対して SQL を使用して迅速に処理を行いたい開発者向けの使いやすい ClickHouse のバージョンです。これにより、フルデータベースサーバーをインストールすることなく、コマンドラインから ClickHouse SQL ダイアレクト を直接使用して SQL コマンドを実行する、シンプルかつ効率的な方法で ClickHouse の機能にアクセスできます。clickhouse-local の主な利点の一つは、clickhouse-client をインストールする際に既に含まれていることです。これにより、開発者は複雑なインストールプロセスを必要とせずに、迅速に clickhouse-local を開始できます。

clickhouse-local は開発やテスト目的、ファイルの処理に最適なツールですが、最終ユーザーやアプリケーションに提供するためのものではありません。そうしたシナリオでは、オープンソースの ClickHouse を使用することをお勧めします。ClickHouse は、大規模な分析ワークロードを処理するように設計された強力な OLAP データベースです。大規模なデータセットに対する複雑なクエリの迅速かつ効率的な処理を提供し、高性能が重要な本番環境での使用に適しています。さらに、ClickHouse では、レプリケーション、シャーディング、高可用性といった幅広い機能を提供しており、大規模なデータセットを処理し、アプリケーションに提供するために必要なものです。より大きなデータセットを処理したり、最終ユーザーやアプリケーションにサービスを提供する必要がある場合は、clickhouse-local の代わりにオープンソースの ClickHouse を使用することをお勧めします。

以下のドキュメントをお読みください。clickhouse-local の使用例として、ローカルファイルのクエリAWS S3 での Parquet ファイルの読み取り が示されています。

clickhouse-local のダウンロード

clickhouse-local は、ClickHouse サーバーおよび clickhouse-client を実行するのと同じ clickhouse バイナリを使用して実行されます。最新バージョンをダウンロードする最も簡単な方法は、次のコマンドです:

注記

ダウンロードしたバイナリは、さまざまな ClickHouse ツールやユーティリティを実行できます。ClickHouse をデータベースサーバーとして実行したい場合は、クイックスタートを参照してください。

SQL を使ってファイル内のデータをクエリする

clickhouse-local の一般的な用途は、ファイルに対してアドホッククエリを実行することです。データをテーブルに挿入する必要がありません。clickhouse-local は、ファイルからデータをストリーミングして一時テーブルに移し、SQL を実行できます。

ファイルが clickhouse-local と同じマシン上にある場合は、単に読み込むファイルを指定するだけで済みます。次の reviews.tsv ファイルには、Amazon の商品レビューのサンプルが含まれています:

このコマンドは次のショートカットです:

ClickHouse は、ファイル名の拡張子からファイルがタブ区切り形式であることを認識します。形式を明示的に指定する必要がある場合は、多くの ClickHouse 入力形式 のいずれかを追加してください:

file テーブル関数はテーブルを作成し、DESCRIBE を使用して推測されたスキーマを見ることができます:

ヒント

ファイル名にグロブを使用することが許可されています(グロブの置換を参照)。

例:

評価が最も高い商品を見つけてみましょう:

AWS S3のParquetファイル内のデータをクエリする

S3内にファイルがある場合は、clickhouse-locals3 テーブル関数を使用して、ClickHouse テーブルにデータを挿入することなくファイルをそのままクエリできます。イギリスで販売された物件の価格を含む house_0.parquet という名前のファイルが公開バケットにあります。それに行数がいくつあるか見てみましょう:

ファイルには 2.7M 行があります:

ClickHouse がファイルから判断する推測されたスキーマを見るのは常に有用です:

最も高価な地区を見てみましょう:

ヒント

ファイルを ClickHouse に挿入する準備ができたら、ClickHouse サーバーを起動し、file および s3 テーブル関数の結果を MergeTree テーブルに挿入します。詳細については、クイックスタートを参照してください。

フォーマット変換

clickhouse-local を使用して、異なるフォーマット間でデータを変換できます。例:

フォーマットはファイル拡張子から自動検出されます:

ショートカットとして、--copy 引数を使用して書くこともできます:

使い方

デフォルトでは、clickhouse-local は同じホスト上の ClickHouse サーバーのデータにアクセスでき、サーバーの構成には依存しません。また、--config-file 引数を使用してサーバー構成の読み込みもサポートしています。テンポラリデータの場合、デフォルトで一意のテンポラリデータディレクトリが作成されます。

基本的な使い方(Linux):

基本的な使い方(Mac):

注記

clickhouse-local は WSL2 を介して Windows でもサポートされています。

引数:

  • -S, --structure — 入力データ用のテーブル構造。
  • --input-format — 入力形式、デフォルトは TSV
  • -F, --file — データのパス、デフォルトは stdin
  • -q, --query; を区切りとして実行するクエリ。--query は複数回指定可能で、例: --query "SELECT 1" --query "SELECT 2"--queries-file と同時には使用できません。
  • --queries-file - 実行するクエリのファイルパス。--queries-file は複数回指定可能で、例: --query queries1.sql --query queries2.sql--query と同時には使用できません。
  • --multiquery, -n – 指定された場合、複数のクエリをセミコロンで区切って --query オプションの後に列挙できます。便宜上 --query を省略し、クエリを --multiquery の後に直接渡すことも可能です。
  • -N, --table — 出力データを入れるテーブル名、デフォルトは table
  • -f, --format, --output-format — 出力形式、デフォルトは TSV
  • -d, --database — デフォルトデータベース、デフォルトは _local
  • --stacktrace — 例外が発生した場合にデバッグ出力をダンプするかどうか。
  • --echo — 実行前にクエリを表示する。
  • --verbose — クエリ実行に関する詳細情報。
  • --logger.console — コンソールにログを記録。
  • --logger.log — ログファイル名。
  • --logger.level — ログレベル。
  • --ignore-error — クエリが失敗しても処理を停止しない。
  • -c, --config-file — ClickHouse サーバーと同じ形式の構成ファイルのパス、デフォルトは空の構成。
  • --no-system-tables — システムテーブルを接続しない。
  • --helpclickhouse-local の引数リファレンス。
  • -V, --version — バージョン情報を表示して終了。

また、--config-file の代わりに一般的に使用される ClickHouse 構成変数ごとの引数もあります。

前の例は次のように同じです:

stdin--file 引数を使う必要はなく、多数のファイルを file テーブル関数 を使って開くことができます:

各 Unix ユーザーのメモリ使用量を出力してみましょう:

クエリ:

結果: