製品をチェック

HCL Domino Driver の30日間無償トライアルをダウンロード

 30日間の無償トライアルへ

製品の詳細

HCL Domino アイコン HCL Domino JDBC Driver

HCL Domino に連携するJava アプリケーションを素早く、簡単に開発できる便利なドライバー。

Apache Spark でHCL Domino のデータをSQL で操作する方法

CData JDBC ドライバーを使用して、Apache Spark でHCL Domino にデータ連携。

杉本和也
リードエンジニア

最終更新日:2023-09-04
domino ロゴ

CData

jdbc ロゴ画像
Apache Spark ロゴ

こんにちは!リードエンジニアの杉本です。

Apache Spark は大規模データ処理のための高速エンジンです。CData JDBC Driver for Domino と組み合わせると、Spark はリアルタイムでHCL Domino のデータに連携して処理ができます。本記事では、Spark シェルに接続してHCL Domino をクエリする方法について解説します。

CData JDBC Driver は、最適化されたデータ処理がドライバーに組み込まれているため、リアルタイムHCL Domino と対話するための高いパフォーマンスを提供します。HCL Domino に複雑なSQL クエリを発行すると、ドライバーはフィルタや集計など、サポートされているSQL操作を直接HCL Domino にプッシュし、組込みSQL エンジンを使用してサポートされていない操作(SQL 関数やJOIN 操作)をクライアント側で処理します。組み込みの動的メタデータクエリを使用すると、ネイティブデータ型を使用してHCL Domino を操作して分析できます。

CData JDBC Driver for Domino をインストール

まずは、本記事右側のサイドバーからDomino JDBC Driver の無償トライアルをダウンロード・インストールしてください。30日間無償で、製品版の全機能が使用できます。

Spark Shell を起動してHCL Domino のデータに接続

  1. ターミナルを開き、Spark shell でCData JDBC Driver for Domino JAR file をjars パラメータに設定します: $ spark-shell --jars /CData/CData JDBC Driver for Domino/lib/cdata.jdbc.domino.jar
  2. Shell でJDBC URL を使ってHCL Domino に接続し、SQL Context load() function でテーブルを読み込みます。

    Domino への接続

    Domino のデータに接続するには、以下のプロパティを設定してください。

    • URL: Domino データベースをホスティングしているサーバーのホスト名、またはIP を入力します。サーバーのポート番号を含めてください。例えば、http://sampleserver:1234/
    • DatabaseScope: Domino Web UI 内のスコープ名を入力します。ドライバーは、ここで指定したスコープによって制御されるスキーマの、フォームとビューを公開します。Domino Admin UI で、サイドバーからScopes メニューを選択します。このプロパティを、既存のスコープ名に設定します。

    Domino での認証

    Domino は、ログインクレデンシャルまたはAzure Active Directory OAuth アプリケーションを使用した認証をサポートしています。

    ログインクレデンシャル

    ログインクレデンシャルで認証するには、以下のプロパティを設定してください:

    • AuthScheme: これを"OAuthPassword" に設定します
    • User: 認証するDomino ユーザーのユーザー名
    • Password: 認証するDominoユ ーザーに関連付けられたパスワード

    ドライバーはログインクレデンシャルを使用して、自動的にOAuth トークン交換を実行します。

    AzureAD

    この認証方法は、Azure Active Directory をIdP として使用してJWTトークンを取得します。Azure Active Directory にカスタムのアプリケーションを作成し、それをIdP として設定する必要があります。そのためには、ヘルプドキュメントの指示に従ってください。その後、以下のプロパティを設定します。

    • AuthScheme: これを"AzureAD" に設定します
    • InitiateOAuth: これをGETANDREFRESH に設定します。InitiateOAuth を使用すると、OAuth 交換の繰り返しやOAuthAccessToken の手動設定を避けることができます。
    • OAuthClientId: カスタムOAuth アプリケーションのセットアップ時に取得したクライアントID
    • OAuthClientSecret: カスタムOAuth アプリケーションのセットアップ時に取得したクライアントシークレット
    • CallbackURL: アプリ登録時に定義したリダイレクトURI。例えば、https://localhost:33333
    • AzureTenant: データにアクセスするために使用されるMicrosoft Online テナント。companyname.microsoft.com 形式の値またはテナントID のいずれかを指定してください。

      テナントID は、Azure ポータルのAzure Active Directory > プロパティページに表示されているディレクトリID と同じです。

    組み込みの接続文字列デザイナー

    JDBC 接続文字列URL の作成には、HCL Domino JDBC Driver にビルトインされたデザイナを使用できます。JAR ファイルをダブルクリックするか、コマンドラインでJAR ファイルを実行するとデザイナが開きます。

    java -jar cdata.jdbc.domino.jar

    接続プロパティを入力し、接続文字列をクリップボードにコピーします。

    scala> val domino_df = spark.sqlContext.read.format("jdbc").option("url", "jdbc:domino:Server=https://domino.corp.com;Database=names.nsf;Port=3002;SSLClientCertType=PEMKEY_FILE;SSLClientCert=full_path_of_certificate.pem;SSLServerCert=*").option("dbtable","ByName").option("driver","cdata.jdbc.domino.DominoDriver").load()
  3. 接続が完了し、データがロードされたら、テーブルスキーマが表示されます。
  4. HCL Domino をテンポラリーテーブルとして登録します:

    scala> domino_df.registerTable("byname")
  5. データに対して、次のようなカスタムSQL クエリを実行します。

    scala> domino_df.sqlContext.sql("SELECT Name, Address FROM ByName WHERE City = Miami").collect.foreach(println)

    コンソールで、次のようなHCL Domino のデータを取得できました!これでHCL Domino との連携は完了です。

    HCL Domino をApache Spark から取得

CData JDBC Driver for Domino をApache Spark で使って、HCL Domino に対して、複雑かつハイパフォーマンスなクエリを実行できます。30日の無償評価版 をダウンロードしてぜひお試しください。

関連コンテンツ

トライアル・お問い合わせ

30日間無償トライアルで、CData のリアルタイムデータ連携をフルにお試しいただけます。記事や製品についてのご質問があればお気軽にお問い合わせください。