ScalarDB Analytics を通じた分析クエリの実行
このページは英語版のページが機械翻訳されたものです。英語版との間に矛盾または不一致がある場合は、英語版を正としてください。
このガイドでは、ScalarDB Analytics アプリケーションの開発方法について説明します。アーキテクチャと設計の詳細については、ScalarDB Analytics の設計を参照してください。
ScalarDB Analytics は現在、実行エンジンとして Spark を使用し、Spark カスタムカタログプラグインを提供することによって、ScalarDB で管理されているデータソースと管理されていないデータソースの統合ビューを Spark テーブルとして提供します。これにより、任意の Spark SQL クエリをシームレスに実行できます。
準備
このセクションでは、前提条件、ScalarDB Analytics セットアップのための Spark 設定、および ScalarDB Analytics 依存関係の追加について説明します。
前提条件
- ScalarDB Analytics server: カタログメタデータを管理し、データソースに接続する実行中のインスタンス。サーバーには少なくとも1つのデータソースが登録されている必要があります。データソースの登録については、ScalarDB Analytics カタログの作成を参照してください。
- Apache Spark: 互換性のあるバージョンの Apache Spark。サポートされているバージョンについては、Sparkを参照してください。まだ Spark をインストールしていない場合は、Apache Spark のウェブサイトから Spark ディストリビューションをダウンロードしてください。
ScalarDB Analytics のセットアップのための Spark 設定
ScalarDB Analytics は ScalarDB Analytics server と統合するために特定の Spark 設定が必要です。
必要な Spark 設定
ScalarDB Analytics を Spark で使用するには、以下を設定する必要があります:
- ScalarDB Analytics パッケージ: Spark と Scala のバージョンに一致する JAR 依存関係を追加
- メータリングリスナー: 課金のためのリソース使用状況を追跡するリスナーを登録
- カタログ登録: ScalarDB Analytics サーバーに接続する Spark カタログを登録
Spark を設定する際は、ScalarDB Analytics サーバー上で作成されたカタログと一致するカタログ名を指定する必要があります。これにより、Spark がそのカタログで管理されているデータソースに正しくアクセスできるようになります。
設定例
以下は完全な設定例です:
# 1. ScalarDB Analytics パッケージ
spark.jars.packages com.scalar-labs:scalardb-analytics-spark-all-<SPARK_VERSION>_<SCALA_VERSION>:<SCALARDB_ANALYTICS_VERSION>
# 2. メータリングリスナー
spark.extraListeners com.scalar.db.analytics.spark.metering.ScalarDbAnalyticsListener
# 3. カタログ登録
spark.sql.catalog.myanalytics com.scalar.db.analytics.spark.ScalarDbAnalyticsCatalog
spark.sql.catalog.myanalytics.server.host analytics-server.example.com
spark.sql.catalog.myanalytics.server.catalog.port 11051
spark.sql.catalog.myanalytics.server.metering.port 11052
プレースホルダーを置き換えてください:
<SPARK_VERSION>: 使用している Spark のバージョン (例:3.5または3.4)<SCALA_VERSION>: 使用している Scala のバージョン (例:2.13または2.12)<SCALARDB_ANALYTICS_VERSION>: ScalarDB Analytics のバージョン (例:3.17.1)
この例では:
- カタログ名
myanalyticsは、ScalarDB Analytics サーバー上に存在するカタログと一致する必要があります. - ScalarDB Analytics サーバーは
analytics-server.example.comで実行されています. - テーブルには
myanalytics.<data_source>.<namespace>.<table>の形式でアクセスします.
Spark 設定のカタログ名は、CLI を使用して ScalarDB Analytics サーバー上で作成されたカタログの名前と一致させる必要があります。たとえば、サーバー上で production という名前のカタログを作成した場合、Spark 設定プロパティでカタログ名として production を使用する必要があります (例: spark.sql.catalog.production、spark.sql.catalog.production.server.host など)。
データソース設定は ScalarDB Analytics server で管理されます。ScalarDB Analytics server でのデータソースの設定方法については、ScalarDB Analytics カタログの作成を参照してください。
Spark アプリケーションのビルド設定
ScalarDB Analytics を使用する Spark アプリケーションを開発する際は、ビルド設定に依存関係を追加できます。たとえば Gradle の場合:
dependencies {
implementation("com.scalar-labs:scalardb-analytics-spark-all-<SPARK_VERSION>_<SCALA_VERSION>:<SCALARDB_ANALYTICS_VERSION>")
}
Gradle Shadow や Maven Shade などのプラグインを使用してアプリケーションを fat JAR にバンドルする場合は、provided や shadow などの設定を使用して fat JAR から ScalarDB Analytics を除外してください。
Spark アプリケーションの開発
このセクションでは、Java を使用して ScalarDB Analytics を使用する Spark アプリケーションを開発する方法について説明します。
ScalarDB Analytics を使用した Spark アプリケーションの開発には3つの方法があります:
- Spark ドライバーアプリケーション: クラスター内で実行される従来のSparkアプリケーション
- Spark Connect アプリケーション: Spark Connectプロトコルを使用するリモートアプリケーション
- JDBC アプリケーション: JDBCインターフェースを使用するリモ ートアプリケーション
環境によっては、上記のすべての方法を使用できない場合があります。サポートされる機能とデプロイメントオプションの詳細については、サポートされているマネージド Spark サービスとそのアプリケーションタイプを参照してください。
これらのすべての方法で、同じテーブル識別子形式を使用して ScalarDB Analytics のテーブルを参照できます。ScalarDB Analytics がデータソースからカタログ情報をマッピングする方法の詳細については、