メインコンテンツまでスキップ
バージョン: 3.13

ScalarDB Analytics with Spark の設定

注記

このページは英語版のページが機械翻訳されたものです。英語版との間に矛盾または不一致がある場合は、英語版を正としてください。

警告

このバージョンの ScalarDB Analytics with Spark はプライベートプレビューでした。代わりにバージョン 3.14 以降を使用してください。

ScalarDB Analytics with Spark を設定する方法は 2 つあります:

  • spark.conf でプロパティを設定する
  • ScalarDB Analytics with Spark が提供するヘルパーメソッドを使用する

どちらの方法も概念的には同等のプロセスなので、好みに応じてどちらかを選択できます。

spark.conf を使用して ScalarDB Analytics with Spark を設定する

ScalarDB Analytics with Spark は Spark カスタムカタログプラグインとして提供されるため、spark.conf を介して ScalarDB Analytics with Spark を有効にできます。

spark.sql.catalog.scalardb_catalog = com.scalar.db.analytics.spark.datasource.ScalarDbCatalog
spark.sql.catalog.scalardb_catalog.config = /<PATH_TO_YOUR_SCALARDB_PROPERTIES>/config.properties
spark.sql.catalog.scalardb_catalog.namespaces = <YOUR_NAMESPACE_NAME_2>,<YOUR_NAMESPACE_NAME_2>
spark.sql.catalog.scalardb_catalog.license.key = {"your":"license", "key":"in", "json":"format"}
spark.sql.catalog.scalardb_catalog.license.cert_path = /<PATH_TO_YOUR_LICENSE>/cert.pem
注記

scalardb_catalog 部分は設定可能なカタログ名です。任意の名前を選択できます。

使用可能なプロパティ

ScalarDB Analytics with Spark で使用可能なプロパティのリストは次のとおりです。

プロパティ名必須説明
spark.sql.catalog.{catalog_name}はいcom.scalar.db.analytics.spark.datasource.ScalarDbCatalog である必要があります
spark.sql.catalog.{catalog_name}.configはいScalarDB 設定ファイルへのパス
spark.sql.catalog.{catalog_name}.namespacesはいSpark 側にインポートする ScalarDB 名前空間のコンマ区切りリスト
spark.sql.catalog.{catalog_name}.license.keyはいJSON形式のライセンスキー
spark.sql.catalog.{catalog_name}.license.cert_pathこれか license.cert_pem のいずれかが必要ですライセンス証明書ファイルへのパス
spark.sql.catalog.{catalog_name}.license.cert_pemこれか license.cert_path のいずれかが必要ですPEM形式のライセンス証明書

スキーマのインポート

spark.conf を適切に設定すると、ScalarDB の基盤となるデータベースに接続されたテーブルを含むカタログが Spark 環境に作成されます。ただし、カタログは、ScalarDB によって管理されるトランザクションメタデータを含む生のテーブルへのアクセスを提供します。代わりに、トランザクションメタデータのないアプリケーション管理データのみに関心がある場合があります。

この目的のために、ScalarDB Analytics with Spark は、トランザクションメタデータを解釈し、アプリケーション管理データのみを表示するビューを作成する SchemaImporter クラスを提供します。これらのビューには ScalarDB テーブルと同等のスキーマがあり、ユーザーはビューを ScalarDB テーブルのように使用できます。以下は、適切に設定されたカタログで SchemaImporter を実行する方法の例です。

import com.scalar.db.analytics.spark.view.SchemaImporter

class YourApp {
public static void main(String[] args) {
SparkSession spark = SparkSession.builder().appName("<YOUR_APPLICATION_NAME>").getOrCreate()
new SchemaImporter(spark, "scalardb_catalog").run() // Import ScalarDB table schemas from the catalog named "scalardb_catalog"
spark.sql("select * from <YOUR_NAMESPACE_NAME_1>.<YOUR_TABLE_NAME>").show()
spark.stop()
}
}

ヘルパーメソッドを使用して ScalarDB Analytics with Spark を設定する

ScalarDB Analytics with Spark が提供するヘルパーメソッドを使用すると、カタログの設定やスキーマのインポートなど、分析クエリを実行するためのすべての設定を行うことができます。さらに、ヘルパーメソッドを使用して、アプリケーションコードで ScalarDB Analytics with Spark を設定することもできます。これは、事前の設定なしで簡単なテストを実行する場合に便利です。

ヘルパーメソッドは、Java および Scala を通じて提供されます。Java では、ScalarDbAnalyticsInitializer を使用して、spark.conf のプロパティに相当するオプションを次のように指定できます。

import com.scalar.db.analytics.spark.ScalarDbAnalyticsInitializer

class YourApp {
public static void main(String[] args) {
// Initialize SparkSession as usual
SparkSession spark = SparkSession.builder().appName("<YOUR_APPLICATION_NAME>").getOrCreate()
// Setup ScalarDB Analytics with Spark via helper class
ScalarDbAnalyticsInitializer
.builder()
.spark(spark)
.configPath("/<PATH_TO_YOUR_SCALARDB_PROPERTIES>/config.properties")
.namespace("<YOUR_NAMESPACE_NAME_1>")
.namespace("<YOUR_NAMESPACE_NAME_2>")
.licenseKey("{\"your\":\"license\", \"key\":\"in\", \"json\":\"format\"}")
.licenseCertPath("/<PATH_TO_YOUR_LICENSE>/cert.pem")
.build()
.run()
// Run arbitrary queries
spark.sql("select * from <YOUR_NAMESPACE_NAME_1>.<YOUR_TABLE_NAME>").show()
// Stop SparkSession
spark.stop()
}
}

Scala では、setupScalarDbAnalytics メソッドは SparkSession の拡張として利用できます。

import com.scalar.db.analytics.spark.implicits._

object YourApp {
def main(args: Array[String]): Unit = {
// Initialize SparkSession as usual
val spark = SparkSession.builder.appName("<YOUR_APPLICATION_NAME>").getOrCreate()
// Setup ScalarDB Analytics with Spark via helper method
spark.setupScalarDbAnalytics(
// ScalarDB config file
configPath = "/<PATH_TO_YOUR_SCALARDB_PROPERTIES>/config.properties",
// Namespaces in ScalarDB to import
namespaces = Set("<YOUR_NAMESPACE_NAME_1>", "<YOUR_NAMESPACE_NAME_2>"),
// License information
license = License.certPath("""{"your":"license", "key":"in", "json":"format"}""", "/<PATH_TO_YOUR_LICENSE>/cert.pem")
)
// Run arbitrary queries
spark.sql("select * from <YOUR_NAMESPACE_NAME_1>.<YOUR_TABLE_NAME>").show()
// Stop SparkSession
spark.stop()
}
}