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

杉本和也
杉本和也
リードエンジニア
CData JDBC ドライバーを使用して、Apache Spark でAnaplan にデータ連携。



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

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

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

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

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

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

    Anaplan への認証

    ドライバーはBasic、証明書、またはOAuth による認証をサポートしています。いずれの場合も、Region をAnaplan アカウントデータがホストされているリージョン(例:US1、これがデフォルト)に設定してください。

    Basic 認証の使用

    AuthSchemeBasic に設定し、Anaplan のUserPassword を入力します。ワークスペースがシングルサインオン(SSO)を使用している場合は、Basic 認証を使用するために Exception User として割り当てられている必要があります。

    証明書認証の使用

    AuthSchemeCertificate に設定し、CertificateCertificateTypePrivateKey プロパティを入力します(どちらかが暗号化されている場合はCertificatePassword / PrivateKeyPassword も設定してください)。証明書は、Anaplan テナント管理者に登録されたCA 発行のX.509 証明書である必要があります。

    OAuth 認証の使用

    Anaplan でカスタムOAuth アプリケーションを登録し、以下のプロパティを設定します:

    • OAuthClientId:カスタムOAuth アプリケーションの登録時に割り当てられたクライアントId。
    • OAuthClientSecret:カスタムOAuth アプリケーションの登録時に割り当てられたクライアントシークレット。
    • CallbackURL:アプリケーションの登録時に定義したリダイレクトURI。
    • InitiateOAuthGETANDREFRESH に設定すると、ドライバーがOAuth トークンの交換と更新を自動的に管理します。

    カスタムOAuth アプリの作成方法とOAuth の使用方法については、ヘルプドキュメントの「はじめに」の章を参照してください。

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

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

    java -jar cdata.jdbc.anaplan.jar
    

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

    scala> val anaplan_df = spark.sqlContext.read.format("jdbc").option("url", "jdbc:anaplan:OAuthClientId=your_client_id;OAuthClientSecret=your_client_secret;CallbackURL=your_callback_url;Region=US1;InitiateOAuth=GETANDREFRESH;").option("dbtable","Sales").option("driver","cdata.jdbc.anaplan.AnaplanDriver").load()
    
  3. 接続が完了し、データがロードされたら、テーブルスキーマが表示されます。
  4. Anaplan をテンポラリーテーブルとして登録します:

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

    scala> anaplan_df.sqlContext.sql("SELECT Region, Product FROM Sales WHERE Value = 100").collect.foreach(println)

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

    Anaplan をApache Spark から取得

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

Apache Spark の設定

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

Anaplan Driver の無料トライアルをダウンロードしてお試しください:

 ダウンロード

詳細:

Anaplan Icon Anaplan JDBC Driver

Anaplan と連携する高機能なJava アプリケーションを迅速に開発・デプロイ。