PHP のOData SDK を使用したDatabricks のデータのクエリ

加藤龍彦
加藤龍彦
デジタルマーケティング
API Server とOData PHP SDK を使用して、エンティティをオブジェクトとしてモデリングすることでPHP でDatabricks エンティティを手軽に使用。



CData API Server は、ADO.NET Provider for Databricks(またはその他の250+ ADO.NET Providers のデータ)と組み合わせることでWeb サービスとしてDatabricks のデータを公開します。下記の手順に従って、Databricks のデータをオブジェクトとして使用します。

Databricks データ連携について

CData を使用すれば、Databricks のライブデータへのアクセスと統合がこれまでになく簡単になります。お客様は CData の接続機能を以下の目的で利用しています:

  • Runtime バージョン 9.1 - 13.X から Pro および Classic Databricks SQL バージョンまで、すべてのバージョンの Databricks にアクセスできます。
  • あらゆるホスティングソリューションとの互換性により、お好みの環境で Databricks を使用し続けることができます。
  • パーソナルアクセストークン、Azure サービスプリンシパル、Azure AD など、さまざまな方法で安全に認証できます。
  • Databricks ファイルシステム、Azure Blob ストレージ、AWS S3 ストレージを使用して Databricks にデータをアップロードできます。

多くのお客様が、さまざまなシステムから Databricks データレイクハウスにデータを移行するために CData のソリューションを使用していますが、ライブ接続ソリューションを使用して、データベースと Databricks 間の接続をフェデレートしているお客様も多数います。これらのお客様は、SQL Server リンクサーバーまたは Polybase を使用して、既存の RDBMS 内から Databricks へのライブアクセスを実現しています。

一般的な Databricks のユースケースと CData のソリューションがデータの問題解決にどのように役立つかについては、ブログをご覧ください:What is Databricks Used For? 6 Use Cases


はじめに


API Server の設定

以下のリンクからAPI Server の無償トライアルをスタートしたら、セキュアなDatabricks OData サービスを作成していきましょう。

Databricks への接続

PHP からDatabricks のデータを操作するには、まずDatabricks への接続を作成・設定します。

  1. API Server にログインして、「Connections」をクリック、さらに「接続を追加」をクリックします。 接続を追加
  2. 「接続を追加」をクリックして、データソースがAPI Server に事前にインストールされている場合は、一覧から「Databricks」を選択します。
  3. 事前にインストールされていない場合は、コネクタを追加していきます。コネクタ追加の手順は以下の記事にまとめてありますので、ご確認ください。
    CData コネクタの追加方法はこちら >>
  4. それでは、Databricks への接続設定を行っていきましょう! 接続設定
  5. Databricks 接続プロパティの取得・設定方法

    Databricks クラスターに接続するには、以下のプロパティを設定します。

    • Database:Databricks データベース名。
    • Server:Databricks クラスターのサーバーのホスト名
    • HTTPPath:Databricks クラスターのHTTP パス。
    • Token:個人用アクセストークン。この値は、Databricks インスタンスのユーザー設定ページに移動してアクセストークンタブを選択することで取得できます。
    Databricks インスタンスで必要な値は、クラスターに移動して目的のクラスターを選択し、Advanced Options の下にあるJDBC/ODBC タブを選択することで見つけることができます。

    Databricks への認証

    CData は、次の認証スキームをサポートしています。

    • 個人用アクセストークン
    • Microsoft Entra ID(Azure AD)
    • Azure サービスプリンシパル
    • OAuthU2M
    • OAuthM2M

    個人用アクセストークン

    認証するには、次を設定します。

    • AuthSchemePersonalAccessToken
    • Token:Databricks サーバーへの接続に使用するトークン。Databricks インスタンスのユーザー設定ページに移動してアクセストークンタブを選択することで取得できます。

    その他の認証方法については、ヘルプドキュメント の「はじめに」セクションを参照してください。

  6. 接続情報の入力が完了したら、「保存およびテスト」をクリックします。

Databricks 接続プロパティの取得・設定方法

Databricks クラスターに接続するには、以下のプロパティを設定します。

  • Database:Databricks データベース名。
  • Server:Databricks クラスターのサーバーのホスト名
  • HTTPPath:Databricks クラスターのHTTP パス。
  • Token:個人用アクセストークン。この値は、Databricks インスタンスのユーザー設定ページに移動してアクセストークンタブを選択することで取得できます。
Databricks インスタンスで必要な値は、クラスターに移動して目的のクラスターを選択し、Advanced Options の下にあるJDBC/ODBC タブを選択することで見つけることができます。

Databricks への認証

CData は、次の認証スキームをサポートしています。

  • 個人用アクセストークン
  • Microsoft Entra ID(Azure AD)
  • Azure サービスプリンシパル
  • OAuthU2M
  • OAuthM2M

個人用アクセストークン

認証するには、次を設定します。

  • AuthSchemePersonalAccessToken
  • Token:Databricks サーバーへの接続に使用するトークン。Databricks インスタンスのユーザー設定ページに移動してアクセストークンタブを選択することで取得できます。

その他の認証方法については、ヘルプドキュメント の「はじめに」セクションを参照してください。

API Server のユーザー設定

次に、API Server 経由でDatabricks にアクセスするユーザーを作成します。「Users」ページでユーザーを追加・設定できます。やってみましょう。

  1. 「Users」ページで ユーザーを追加をクリックすると、「ユーザーを追加」ポップアップが開きます。
  2. 次に、「ロール」、「ユーザー名」、「権限」プロパティを設定し、「ユーザーを追加」をクリックします。
  3. その後、ユーザーの認証トークンが生成されます。各ユーザーの認証トークンとその他の情報は「Users」ページで確認できます。

Databricks 用のAPI エンドポイントの作成

ユーザーを作成したら、Databricks のデータ用のAPI エンドポイントを作成していきます。

  1. まず、「API」ページに移動し、 「 テーブルを追加」をクリックします。
  2. アクセスしたい接続を選択し、次へをクリックします。
  3. 接続を選択した状態で、各テーブルを選択して確認をクリックすることでエンドポイントを作成します。

OData のエンドポイントを取得

以上でDatabricks への接続を設定してユーザーを作成し、API Server でDatabricks データのAPI を追加しました。これで、OData 形式のDatabricks データをREST API で利用できます。API Server の「API」ページから、API のエンドポイントを表示およびコピーできます。

Databricks 接続プロパティの取得・設定方法

Databricks クラスターに接続するには、以下のプロパティを設定します。

  • Database:Databricks データベース名。
  • Server:Databricks クラスターのサーバーのホスト名
  • HTTPPath:Databricks クラスターのHTTP パス。
  • Token:個人用アクセストークン。この値は、Databricks インスタンスのユーザー設定ページに移動してアクセストークンタブを選択することで取得できます。
Databricks インスタンスで必要な値は、クラスターに移動して目的のクラスターを選択し、Advanced Options の下にあるJDBC/ODBC タブを選択することで見つけることができます。

Databricks への認証

CData は、次の認証スキームをサポートしています。

  • 個人用アクセストークン
  • Microsoft Entra ID(Azure AD)
  • Azure サービスプリンシパル
  • OAuthU2M
  • OAuthM2M

個人用アクセストークン

認証するには、次を設定します。

  • AuthSchemePersonalAccessToken
  • Token:Databricks サーバーへの接続に使用するトークン。Databricks インスタンスのユーザー設定ページに移動してアクセストークンタブを選択することで取得できます。

その他の認証方法については、ヘルプドキュメント の「はじめに」セクションを参照してください。

さらに、OData SDK for PHP との互換性のためにAPI Server を構成します。「Settings」をクリックし、OData セクションで「デフォルトバージョン」を2.0 に設定します。

API Server に接続するユーザーの認証トークンを取得

作成するOData サービスを決定したら、「Users」をクリックして任意のユーザーをクリックし、ユーザーの認証トークンを取得します。API Server は、認証トークンベースの認証を使用して、主要な認証スキームをサポートします。SSL を使用すれば、接続の認証だけでなく、暗号化も可能です。IP アドレスを使用してアクセスを制限することも可能です。デフォルトでは、ローカルマシンからの接続のみが許可されます。

わかりやすくするために、URL に認証トークンを設定してAPI Server への認証を行います。これはデフォルトでは有効になっていないため、API Server の構成ファイルであるsettings.cfg に以下の行を追加する必要があります。

[Application]
AllowAuthTokenInUrl = true

settings.cfg ファイルはデータディレクトリに配置されています。.NET 版では、www の下のapp_data フォルダがデータディレクトリになっています。Java 版でのデータディレクトリの位置は、OS によって変わります。

  • Windows:C:\ProgramData\CData\Databricks\
  • Unix or Mac OS X:~/cdata/Databricks/

Databricks エンティティをPHP オブジェクトとして使用する

以下のステップに従ってOData PHP SDK を使用し、API Server によって公開されるWeb サービスに接続するプロキシクラスを作成します。

  1. 以下のようなコマンドにURL を渡します。

    php C:\PHPLib\ODataphp\PHPDataSvcUtil.php /uri=https://your-server:8032/api.rsc/@your-authtoken/ /out=C:\PHPLib\ODataphp\DatabricksEntities.php

    上記のコマンドは、OData エンドポイントからのレスポンスで返されたメタデータからクラスを定義し、指定したフォルダにクラス定義を出力します。

    API Server とOData SDK for PHP は、フォーム認証とWindows 認証をサポートします。API Server は、認証トークンを使用してOData エンドポイントへのアクセスを許可されたユーザーを認証します。HTTP Basic 認証で認証トークを指定するか、OData URL に追加することができます。

    許可されたユーザーは、API Server の「Users」セクションで設定できます。

  2. PHP のオブジェクト指向インターフェースを使用して、Databricks のデータへのアクセスを開始できます。以下のコードは、Customers テーブルのレコードを作成し、リアルタイムデータを取得して、新しく作成されたレコードを表示します。

    require_once 'DatabricksEntities.php';
    try{
      $svc = new CData();
      $customers = new Customers();
      $customers->Country = 'US';
      $svc->AddToCustomers($customers);
      $svc->SetSaveChangesOptions(SaveChangesOptions::None);
      $svc->SaveChanges();
      $response = $svc->customers()->Execute();
      foreach($response->Result as $customers)
        echo $customers->City."";
    } catch (Exception $e) {    //catch errors from the API Server
      echo $e->getError(), "\n";
    }
    

はじめる準備はできましたか?

詳細はこちら、または無料トライアルにお申し込みください:

CData API Server お問い合わせ