ScalarDB Analytics をはじめよう
このページは英語版のページが機械翻訳されたものです。英語版との間に矛盾または不一致がある場合は、英語版を正としてください。
このチュートリアルでは、ScalarDB Analytics を使用してサンプルデータに対して分析クエリを実行する方法について説明します。ソースコードは https://github.com/scalar-labs/scalardb-samples/tree/main/scalardb-analytics-spark-sample で入手できます。
現在のバージョンの ScalarDB Analytics は、実行エンジンとして Apache Spark を活用しています。Spark カスタムカタログを使用して、ScalarDB 管理下データソースと ScalarDB 管理外データソースの統合ビューを提供します。ScalarDB Analytics を使用すると、これらのデータソースのテーブルをネイティブ Spark テーブルとして扱うことができ、任意の Spark SQL クエリをシームレスに実行できます。たとえば、Cassandra に格納されているテーブルを PostgreSQL のテーブルと結合して、複数のデータソースにまたがる分析を簡単に実行できます。
サンプルアプリケーションの概要
このサンプルチュートリアルでは、Sparkの設定によってScalarDB Analyticsを有効にし、ScalarDB Analytics から提供されるテーブルに対して spark-sql
を用いたインタラクティブな分析を実行する方法をしめします。
このサンプルアプリケーションの前提条件
- Docker 20.10以降と Docker Compose V2以降
ScalarDB Analytics を使用するには、ライセンスキー (試用ライセンスまたは商用ライセンス) が必要です。ライセンスキーをお持ちでない場合は、お問い合わせください。
ステップ 1: ScalarDB Analytics をセットアップする
ScalarDB サンプルリポジトリをクローンする
ターミナル を開き、次のコマンドを実行して ScalarDB サンプルリポジトリをクローンします:
git clone https://github.com/scalar-labs/scalardb-samples
次に、次のコマンドを実行してサンプルアプリケーションを含むディレクトリに移動します:
cd scalardb-samples/scalardb-analytics-spark-sample
ライセンス情報を設定する
ScalarDB Analytics では、Spark 設定で有効なライセンス情報を指定する必要があります。ライセンスの詳細は、spark-defaults.conf ファイルで指定できます。
Spark インストールの conf ディレクトリにある spark-defaults.conf ファイルを開きます。次に、<REPLACE_THIS_WITH_YOUR_LICENSE>
をライセンスキーに置き換え、<REPLACE_THIS_WITH_YOUR_LICENSE_CERTIFICATE_PEM_CONTENTS>
をライセンス証明書の PEM エンコードされた内容に置き換えます。
spark.sql.catalog.test_catalog.license.key <REPLACE_THIS_WITH_YOUR_LICENSE>
spark.sql.catalog.test_catalog.license.cert_pem <REPLACE_THIS_WITH_YOUR_LICENSE_CERTIFICATE_PEM_CONTENTS>
ScalarDB Analytics を設定するために spark-defaults.conf で必要な項目の詳細については、ScalarDB Analytics の設定を参照してください。
ステップ 2: サンプルデータベースをセットアップする
サンプルデータベースをセットアップするには、次のコマンドを実行します:
docker compose up -d --wait
このコマンドは、PostgreSQL、Cassandra、MySQL の3つのサービスをローカルで起動します。
- PostgreSQL: 単独で使用されます (ScalarDB 管理外)。
- Cassandra および MySQL: ScalarDB のバックエンドデータベースとして使用されます (ScalarDB 管理下)。
このガイドでは、PostgreSQL は ScalarDB トランザクションによって管理されない ScalarDB 管理外データベース と呼ばれ、Cassandra および DynamoDB は ScalarDB トランザクションによって管理される ScalarDB 管理下データベース と呼ばれます。
ScalarDB 管理外データベースについては、Docker コンテナが初期化されるとサンプルデータが自動的に読み込まれるため、追加の手順は必要ありません。 ScalarDB 管理下データベースについては、コンテナを起動した後、次のコマンドを実行してサンプルデータをロードします:
docker compose run --rm sample-data-loader
セットアップが完了すると、次のテーブルが使用可能になります:
- PostgreSQL:
sample_ns.customer
- ScalarDB (Cassandra):
cassandrans.lineitem
- ScalarDB (MySQL):
mysqlns.order
ScalarDB 内では、cassandrans
と mysqlns
がそれぞれ Cassandra と MySQL にマッピングされます。
列定義やデータ型を含むテーブルスキーマの詳細については、スキーマの詳細を参照してください。サンプルデータがこれらのテーブルに正常にロードされていることを確認してください。
ステップ 3: Spark SQL コンソールを起動する
Spark SQL コンソールを起動するに は、次のコマンドを実行します:
docker compose run --rm spark-sql
Spark SQL コンソールを起動すると、spark-defaults.conf の設定で ScalarDB Analytics カタログが初期化され、test_catalog
という名前の Spark カタログとして登録されます。
名前空間マッピング
データソース内の各テーブルは、以下のようにSpark SQLのテーブルにマッピングされます。
- PostgreSQL:
test_catalog.postgresql.sample_ns.customer
- ScalarDB (Cassandra ):
test_catalog.scalardb.cassandrans.lineitem
- ScalarDB (MySQL):
test_catalog.scalardb.mysqlns.orders
各データソースのテーブル名をSpark SQLのテーブル名にマッピングする規則の詳細は、名前空間マッピングの詳細を参照してください。
さらに、ScalarDB Analytics は ScalarDB テーブルに対して、一般的なユースケースを簡単にするために、WAL 解釈ビューを提供します。このサンプルアプリケーションでは、次の WAL 解釈ビューが利用できます:
- ScalarDB (Cassandra ):
test_catalog.view.scalardb.cassandrans.lineitem
- ScalarDB (MySQL):
test_catalog.view.scalardb.mysqlns.orders
ほとんどの場合、WAL 解釈ビューは生のテーブルよりも便利です。このチュートリアルでは、ScalarDB のテーブルについては WAL 解釈ビューを使用します。WAL 解釈ビューの詳細な情報 (使用例や利点など) については、ScalarDB テーブル用の WAL 解釈ビューを参照してください。
ステップ 4: 分析クエリを実行する
これですべての設定が完了し、Spark SQL コンソールを使用してサンプルデータに対して分析クエリを実行できます。