ScalarDB Analytics を通じた分析クエリの実行
このページは英語版のページが機械翻訳されたものです。英語版との間に矛盾または不一致がある場合は、英語版を正としてください。
このガイドでは、ScalarDB Analytics アプリケーションの開発方法について説明します。アーキテクチャと設計の詳細については、ScalarDB Analytics の設計を参照してください。
ScalarDB Analytics は現在、実行エンジンとして Spark を使用し、Spark カスタムカタログプラグインを提供することによって、ScalarDB で管理されているデータソースと管理されていないデータソースの統合ビューを Spark テーブルとして提供します。これにより、任意の Spark SQL クエリをシームレスに実行できます。
準備
このセクションでは、前提条件、ScalarDB Analytics セットアップのための Spark 設定、および ScalarDB Analytics 依存関係の追加について説明します。
前提条件
ScalarDB Analytics は Apache Spark 3.4以降で動作します。まだ Spark をインストールしていない場合は、Apache Spark のウェブサイトから Spark ディストリビューションをダウンロードしてください。
Apache Spark は Scala 2.12 または Scala 2.13 でビルドされています。ScalarDB Analytics は両方のバージョンをサポートしています。後で適切なバージョンの ScalarDB Analytics を選択できるように、使用しているバージョンを確認してください。詳細については、バージョン互換性を参照してください。
ScalarDB Analytics のセットアップのための Spark 設定
以下のセクションでは、ScalarDB Analytics で利用可能なすべての設定オプションについて説明します。
- ScalarDB Analytics の Spark との統合方法
- データソースの接続とアクセス方法
- ライセンス情報の提供方法
実践的なシナリオでの設定例については、サンプルアプリケーション設定を参照してください。
Spark プラグインの設定
| 設定キー名 | 必須 | 説明 |
|---|---|---|
spark.jars.packages | いいえ | 必要な依存関係の Maven 座標をカンマ区切りで指定します。使用する ScalarDB Analytics パッケージを含める必要があります。含めない場合は、Spark アプリケーションの実行時にコマンドライン引数として指定します。ScalarDB Analytics の Maven 座標の詳細については、ScalarDB Analytics 依存関係の追加を参照してください。 |
spark.sql.extensions | はい | com.scalar.db.analytics.spark.extension.ScalarDbAnalyticsExtensions を設定する必要があります。 |
spark.sql.catalog.<CATALOG_NAME> | はい | com.scalar.db.analytics.spark.ScalarDbAnalyticsCatalog を設定する必要があります。 |
<CATALOG_NAME> には任意の名前を指定できます。設定全体で同じカタログ名を使用するようにしてくだ さい。
ライセンスの設定
| 設定キー名 | 必須 | 説明 |
|---|---|---|
spark.sql.catalog.<CATALOG_NAME>.license.key | はい | ScalarDB Analytics のライセンスキーの JSON 文字列 |
spark.sql.catalog.<CATALOG_NAME>.license.cert_pem | はい | ScalarDB Analytics ライセンスの PEM エンコードされた証明書の文字列。cert_pem または cert_path のいずれかを設定する必要があります。 |
spark.sql.catalog.<CATALOG_NAME>.license.cert_path | はい | ScalarDB Analytics ライセンスの PEM エンコードされた証明書へのパス。cert_pem または cert_path のいずれかを設定する必要があります。 |
データソースの設定
ScalarDB Analytics は複数のタイプのデータソースをサポートしています。各タイプには特定の設定パラメータが必要です:
- ScalarDB
- MySQL
- PostgreSQL
- Oracle
- SQL Server
- DynamoDB
ScalarDB Analytics は ScalarDB をデータソースとしてサポートしています。この表では、ScalarDB をデータソースとして設定する方法について説明します。
| 設定キー名 | 必須 | 説明 |
|---|---|---|
spark.sql.catalog.<CATALOG_NAME>.data_source.<DATA_SOURCE_NAME>.type | はい | 常に scalardb を設定します |
spark.sql.catalog.<CATALOG_NAME>.data_source.<DATA_SOURCE_NAME>.config_path | はい | ScalarDB の設定ファイルへのパス |
<DATA_SOURCE_NAME> には任意の名前を使用できます。
| 設定キー名 | 必須 | 説明 |
|---|---|---|
spark.sql.catalog.<CATALOG_NAME>.data_source.<DATA_SOURCE_NAME>.type | はい | 常に mysql を設定します |
spark.sql.catalog.<CATALOG_NAME>.data_source.<DATA_SOURCE_NAME>.host | はい | MySQL サーバーのホスト名 |
spark.sql.catalog.<CATALOG_NAME>.data_source.<DATA_SOURCE_NAME>.port | はい | MySQL サーバーのポート番号 |
spark.sql.catalog.<CATALOG_NAME>.data_source.<DATA_SOURCE_NAME>.username | はい | MySQL サーバーのユーザー名 |
spark.sql.catalog.<CATALOG_NAME>.data_source.<DATA_SOURCE_NAME>.password | はい | MySQL サーバーのパスワード |
spark.sql.catalog.<CATALOG_NAME>.data_source.<DATA_SOURCE_NAME>.database | いいえ | 接続するデータベースの名前 |
<DATA_SOURCE_NAME> には任意の名前を使用できます。
| 設定キー名 | 必須 | 説明 |
|---|---|---|
spark.sql.catalog.<CATALOG_NAME>.data_source.<DATA_SOURCE_NAME>.type | は い | 常に postgresql または postgres を設定します |
spark.sql.catalog.<CATALOG_NAME>.data_source.<DATA_SOURCE_NAME>.host | はい | PostgreSQL サーバーのホスト名 |
spark.sql.catalog.<CATALOG_NAME>.data_source.<DATA_SOURCE_NAME>.port | はい | PostgreSQL サーバーのポート番号 |
spark.sql.catalog.<CATALOG_NAME>.data_source.<DATA_SOURCE_NAME>.username | はい | PostgreSQL サーバーのユーザー名 |
spark.sql.catalog.<CATALOG_NAME>.data_source.<DATA_SOURCE_NAME>.password | はい | PostgreSQL サーバーのパスワード |
spark.sql.catalog.<CATALOG_NAME>.data_source.<DATA_SOURCE_NAME>.database | はい | 接続するデータベースの名前 |
<DATA_SOURCE_NAME> には任意の名前を使用できます。
| 設定キー名 | 必須 | 説明 |
|---|---|---|
spark.sql.catalog.<CATALOG_NAME>.data_source.<DATA_SOURCE_NAME>.type | はい | 常に oracle を設定します |
spark.sql.catalog.<CATALOG_NAME>.data_source.<DATA_SOURCE_NAME>.host | はい | Oracle サーバーのホスト名 |
spark.sql.catalog.<CATALOG_NAME>.data_source.<DATA_SOURCE_NAME>.port | はい | Oracle サーバーのポート番号 |
spark.sql.catalog.<CATALOG_NAME>.data_source.<DATA_SOURCE_NAME>.username | はい | Oracle サーバーのユーザー名 |
spark.sql.catalog.<CATALOG_NAME>.data_source.<DATA_SOURCE_NAME>.password | はい | Oracle サーバーのパスワード |
spark.sql.catalog.<CATALOG_NAME>.data_source.<DATA_SOURCE_NAME>.service_name | はい | Oracle サーバーのサービス名 |
<DATA_SOURCE_NAME> には任意の名前を使用できます。
| 設定キー名 | 必須 | 説明 |
|---|---|---|
spark.sql.catalog.<CATALOG_NAME>.data_source.<DATA_SOURCE_NAME>.type | はい | 常に sqlserver または mssql を設定します |
spark.sql.catalog.<CATALOG_NAME>.data_source.<DATA_SOURCE_NAME>.host | はい | SQL Server のホスト名 |
spark.sql.catalog.<CATALOG_NAME>.data_source.<DATA_SOURCE_NAME>.port | はい | SQL Server のポート番号 |
spark.sql.catalog.<CATALOG_NAME>.data_source.<DATA_SOURCE_NAME>.username | はい | SQL Server のユーザー名 |
spark.sql.catalog.<CATALOG_NAME>.data_source.<DATA_SOURCE_NAME>.password | はい | SQL Server のパスワード |
spark.sql.catalog.<CATALOG_NAME>.data_source.<DATA_SOURCE_NAME>.database | いいえ | 接続するデータベースの名前 |
spark.sql.catalog.<CATALOG_NAME>.data_source.<DATA_SOURCE_NAME>.secure | いいえ | SQL Server への接続にセキュアな接続を使用するかどうか。セキュアな接続を使用する場合は true を設定します。 |
<DATA_SOURCE_NAME> には任意の名前を使用できます。
| 設定キー名 | 必須 | 説明 |
|---|---|---|
spark.sql.catalog.<CATALOG_NAME>.data_source.<DATA_SOURCE_NAME>.type | はい | 常に dynamodb を設定します |
spark.sql.catalog.<CATALOG_NAME>.data_source.<DATA_SOURCE_NAME>.region | region または endpoint のいずれかを設定する必要があります | DynamoDB インスタンスの AWS リージョン |
spark.sql.catalog.<CATALOG_NAME>.data_source.<DATA_SOURCE_NAME>.endpoint | region または endpoint のいずれかを設定する必要があります | DynamoDB インスタンスの AWS エンドポイント |
spark.sql.catalog.<CATALOG_NAME>.data_source.<DATA_SOURCE_NAME>.schema | はい | カタログのスキーマを表す JSON オブジェクト。形式の詳細については、カタログレベルのマッピングを参照してください。 |
<DATA_SOURCE_NAME> には任意の名前を使用できます。
設定例
以下は、複数のデータソースを持つ scalardb という名前のカタログを設定する ScalarDB Analytics の設定例です:
# Sparkプラグインの設定
spark.jars.packages com.scalar-labs:scalardb-analytics-spark-all-<SPARK_VERSION>_<SCALA_VERSION>:<SCALARDB_ANALYTICS_VERSION>
spark.sql.extensions com.scalar.db.analytics.spark.extension.ScalarDbAnalyticsExtensions
spark.sql.catalog.scalardb com.scalar.db.analytics.spark.ScalarDbAnalyticsCatalog
# ライセンスの設定
spark.sql.catalog.scalardb.license.key <LICENSE_KEY>
spark.sql.catalog.scalardb.license.cert_pem <LICENSE_PEM_ENCODED_CERTIFICATE>
# データソースの設定
spark.sql.catalog.scalardb.data_source.scalardb.type scalardb
spark.sql.catalog.scalardb.data_source.scalardb.config_path /path/to/scalardb.properties
spark.sql.catalog.scalardb.data_source.mysql_source.type mysql
spark.sql.catalog.scalardb.data_source.mysql_source.host localhost
spark.sql.catalog.scalardb.data_source.mysql_source.port 3306
spark.sql.catalog.scalardb.data_source.mysql_source.username root
spark.sql.catalog.scalardb.data_source.mysql_source.password password
spark.sql.catalog.scalardb.data_source.mysql_source.database mydb
括弧内の内容は以下のように変更する必要があります:
<LICENSE_KEY>: ScalarDB Analytics のライセンスキー<LICENSE_PEM_ENCODED_CERTIFICATE>: ScalarDB Analytics ライセンスの PEM エンコードされた証明書<SPARK_VERSION>: 使用している Spark のメジャーおよびマイナーバージョン (例: 3.4)<SCALA_VERSION>: Spark インストールに対応する Scala のメジャーおよびマイナーバージョン (例: 2.12 または 2.13)<SCALARDB_ANALYTICS_VERSION>: ScalarDB Analytics のバージョン
ScalarDB Analytics 依存関係の追加
ScalarDB Analytics は Maven Central Repository でホストされています。パッケージ名は scalardb-analytics-spark-all-<SPARK_VERSION>_<SCALA_VERSION>:<SCALARDB_ANALYTICS_VERSION> で、以下の通りです:
<SPARK_VERSION>: 使用している Spark のメジャーおよびマイナーバージョン (例: 3.4)<SCALA_VERSION>: Spark インストールに対応する Scala のメジャーおよびマイナーバージョン (例: 2.12 または 2.13)<SCALARDB_ANALYTICS_VERSION>: ScalarDB Analytics のバージョン
バージョンの互換性の詳細については、バージョン互換性を参照してください。
プロジェクトのビルド設定を設定することで、この依存関係をプロジェクトに追加できます。例えば、Gradle を使用している場合は、build.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 などの適切な configuration を選択して、fat JAR ファイルから ScalarDB Analytics を除外する必要があります。