現在、開発者は Databend を試す必要があり、Databend Cloud を使用するか、公式ドキュメントに従って Databend サービスをデプロイするかを選択できます。Databend アーキテクチャには 3 つの層があるため、Databend サービスを展開するには、通常databend-query
3 つのdatabend-meta
プロセスを開始しminio
、ポートなどの構成項目を変更する必要があり、そのプロセスは少し複雑です。Databend をすぐに試すためのより速い方法はありますか?
Python バインディング
簡単な方法は、Python で Databend を実行することです。Rust の優れたエコロジーを使用して、pyo3 ライブラリに基づいた Python バインディングをリリースしました。Databend は、ローカル juypter や colab などのオンライン サービスで使用できます。
# pip install databend
from databend import SessionContext
ctx = SessionContext()
df = ctx.sql("select number, number + 1, number::String as number_p_1 from numbers(8)")
# convert to pyarrow
df.to_py_arrow()
# convert to pandas
df.to_pandas()
データベンドローカルモード
clickhouse-local
などの組み込みデータベースの利点を利用してduckdb
、Databend でローカル モードを有効にすることもできます。
local
スキーマは Databend の簡略化されたバージョンであり、ユーザーは Databend サービスをデプロイしなくても、SQL を使用してコマンドで Databend と対話できます。その利点は、開発とインストールが簡素化され、開発者が SQL を使用して Databend でサポートされる関数を使用して簡単なデータ処理を実行できることです。運用環境で Databend を使用する必要がある場合は、公式 Web サイトで推奨されているように Databend サービスまたは Databend Cloud をデプロイすることをお勧めしますが、開発者またはテスト エンジニアの場合は、このモードを使用して Databend を操作できますlocal
。
local
このモードでは、一時的なデータベンド クエリ プロセスが開始されます。このプロセスはクライアントとサーバーを結合し、そのストレージは一時ディレクトリにあります。ライフ サイクルはプロセスに従います。プロセスが終了すると、リソースも破棄されます。複数のプロセスを開始するとlocal
、それらのリソースは互いに分離されます。
local
各例は、このモードで実現できる機能を紹介する短い数行のコマンドです。
これを行う前に、databend-query バイナリをダウンロードし、そのバイナリを PATH 環境変数に入れて、bend-local
ツール エイリアスを埋め込む必要があります。
alias bend-local="databend-query local"
-
コマンドライン対話型 (REPL) モード
- ターミナルに bend-local コマンドを直接入力した後、duckdb cli ツールと同様に、クライアントとサーバーを組み合わせる REPL モードに入ります。
-
❯ bend-local Welcome to Databend, version v1.2.4-nightly-326cabe38056168dd261f744609ea85319f02686(rust-1.72.0-nightly-2023-09-02T15:18:48.006847567Z). databend-local:) select max(a) from range(1,1000) t(a); ┌────────────┐ │ max(a) │ │ Int64 NULL │ ├────────────┤ │ 999 │ └────────────┘ 1 row result in 0.036 sec. Processed 999 rows, 999 B (27.89 thousand rows/s, 217.90 KiB/s) databend-local:)
- bend-local は、パーソナライズされたクライアント構成を行うための構成ファイルをサポートしていることは注目に値します
~/.config/databend/config.toml
。構成ファイルの形式は、bendsqlと互換性があります。
<!---->
-
1 行のコマンドで寄木細工ファイルが生成されます
- クエリ SQL と出力形式で渡す --query、--output-format パラメータをサポート
-
bend-local --query "select number, number + 1 as b from numbers(10)" --output-format parquet > /tmp/a.parquet
-
シェル パイプ モードはデータを分析し、$STDIN マクロは stdin ストリームを一時ステージ テーブルとして解析します。
-
❯ echo '3,4' | bend-local -q "select $1 a, $2 b from $STDIN (file_format => 'csv') " --output-format table SELECT $1 AS a, $2 AS b FROM 'fs:///dev/fd/0' (FILE_FORMAT => 'csv') ┌─────────────────┐ │ a │ b │ │ String │ String │ ├────────┼────────┤ │ '3' │ '4' │ └─────────────────┘
-
上記の SQL では、シェル内でシェルをエスケープするために $ を使用していることに注意してください。
-
ステージ テーブルの読み取り (ローカル ファイル、外部 S3 など)
-
❯ bend-local --query "select count() from 'fs:///tmp/a.parquet' (file_format => 'parquet') " 10 ❯ bend-local --query "select count() from 'https://datafuse-1253727613.cos.ap-hongkong.myqcloud.com/data/books.parquet' (file_format => 'parquet') " 2 ❯ bend-local --query "select $1, $2 from 'http://www.geoplugin.net/csv.gp?ip=3.3.3.3' (file_format => 'csv') "
-
-
システムプロセスを分析して、各ユーザーが占有しているメモリを確認します。
-
❯ ps aux | tail -n +2 | awk '{ printf("%s\t%s\n", $1, $4) }' | bend-local -q "select $1 as user, sum($2::double) as memory from $STDIN (file_format => 'tsv') group by user " sundy 9.100000000000001 root 1.2 dbus 0.0
-
-
データ クリーニング、ある形式を他の形式に変換 (csv、tsv、parquet、ndjson などをサポート)
-
❯ bend-local -q 'select rand() as a, rand() as b from numbers(100)' > /tmp/a.tsv ❯ cat /tmp/a.tsv | bend-local -q "select $1 a, $2 b from $STDIN (file_format => 'tsv') " --output-format parquet > /tmp/a.parquet
-
-
他にも興味深い分析例が皆さんの探索を待っています。