Apache Spark でOracle Eloqua Reporting のデータをSQL で操作する方法
Apache Spark は大規模データ処理のための高速エンジンです。CData JDBC Driver for OracleEloquaReporting と組み合わせると、Spark はリアルタイムでOracle Eloqua Reporting のデータに連携して処理ができます。本記事では、Spark シェルに接続してOracle Eloqua Reporting をクエリする方法について解説します。
CData JDBC Driver は、最適化されたデータ処理がドライバーに組み込まれているため、リアルタイムOracle Eloqua Reporting と対話するための高いパフォーマンスを提供します。Oracle Eloqua Reporting に複雑なSQL クエリを発行すると、ドライバーはフィルタや集計など、サポートされているSQL操作を直接Oracle Eloqua Reporting にプッシュし、組込みSQL エンジンを使用してサポートされていない操作(SQL 関数やJOIN 操作)をクライアント側で処理します。組み込みの動的メタデータクエリを使用すると、ネイティブデータ型を使用してOracle Eloqua Reporting を操作して分析できます。
CData JDBC Driver for OracleEloquaReporting をインストール
まずは、本記事右側のサイドバーからOracleEloquaReporting JDBC Driver の無償トライアルをダウンロード・インストールしてください。30日間無償で、製品版の全機能が使用できます。
Spark Shell を起動してOracle Eloqua Reporting のデータに接続
- ターミナルを開き、Spark shell でCData JDBC Driver for OracleEloquaReporting JAR file をjars パラメータに設定します:
$ spark-shell --jars /CData/CData JDBC Driver for OracleEloquaReporting/lib/cdata.jdbc.oracleeloquareporting.jar
- Shell でJDBC URL を使ってOracle Eloqua Reporting に接続し、SQL Context load() function でテーブルを読み込みます。
Oracle Eloqua Reporting では、以下の認証方法に対応しています。
- Basic 認証(ユーザーとパスワード)
- OAuth 2.0 コードグラントフロー
- OAuth 2.0 パスワードグラントフロー
Basic 認証(ユーザーとパスワード)
ユーザーとパスワードで認証するには、以下のプロパティを設定します。
- AuthScheme: Basic を指定します。
- Company: Oracle Eloqua Reporting アカウントに関連付けられた会社名を指定します。
- User: ログインアカウント名を指定します。
- Password: ログインパスワードを指定します。
OAuth 認証(コードグラントフロー)
OAuth コードグラントフローで認証するには、AuthScheme を OAuth に設定し、カスタム OAuth アプリケーションを作成します。カスタム OAuth アプリケーションの作成方法については、ヘルプドキュメントをご参照ください。
続いて、以下のプロパティを設定します。
- InitiateOAuth: GETANDREFRESH を指定します。OAuthAccessToken の自動取得と更新に使用します。
- OAuthClientId: アプリケーション登録時に割り当てられたクライアント ID を指定します。
- OAuthClientSecret: アプリケーション登録時に割り当てられたクライアントシークレットを指定します。
- CallbackURL: アプリケーション登録時に定義したリダイレクト URI を指定します。
接続すると、デフォルトブラウザで Oracle Eloqua Reporting の OAuth エンドポイントが開きます。ログインしてアプリケーションに権限を付与してください。アクセストークンの有効期限が切れると、ドライバーが自動的に更新します。
OAuth 認証(パスワードグラントフロー)
OAuth パスワードグラントフローでは、OAuth アプリケーションの資格情報とユーザー資格情報を組み合わせて認証できます。ブラウザでの手動による権限付与は必要ありません。この認証方法を使用するには、OAuth アプリを作成する必要があります(ヘルプドキュメントを参照)。
以下のプロパティを設定します。
- AuthScheme: OAuthPassword を指定します。
- Company: 会社の一意の識別子を指定します。
- User: ログインアカウント名を指定します。
- Password: ログインパスワードを指定します。
- OAuthClientId: カスタム OAuth アプリケーション登録時に割り当てられたクライアント ID を指定します。
- OAuthClientSecret: カスタム OAuth アプリケーション登録時に割り当てられたクライアントシークレットを指定します。
組み込みの接続文字列デザイナー
JDBC 接続文字列URL の作成には、Oracle Eloqua Reporting JDBC Driver にビルトインされたデザイナを使用できます。JAR ファイルをダブルクリックするか、コマンドラインでJAR ファイルを実行するとデザイナが開きます。
java -jar cdata.jdbc.oracleeloquareporting.jar
接続プロパティを入力し、接続文字列をクリップボードにコピーします。
scala> val oracleeloquareporting_df = spark.sqlContext.read.format("jdbc").option("url", "jdbc:oracleeloquareporting:AuthScheme=Basic;User=user;Password=password;Company=MyCompany;").option("dbtable","").option("driver","cdata.jdbc.oracleeloquareporting.OracleEloquaReportingDriver").load() - 接続が完了し、データがロードされたら、テーブルスキーマが表示されます。
Oracle Eloqua Reporting をテンポラリーテーブルとして登録します:
scala> oracleeloquareporting_df.registerTable("")-
データに対して、次のようなカスタムSQL クエリを実行します。
scala> oracleeloquareporting_df.sqlContext.sql("SELECT , FROM WHERE = ").collect.foreach(println)コンソールで、次のようなOracle Eloqua Reporting のデータを取得できました!これでOracle Eloqua Reporting との連携は完了です。
CData JDBC Driver for OracleEloquaReporting をApache Spark で使って、Oracle Eloqua Reporting に対して、複雑かつハイパフォーマンスなクエリを実行できます。30日の無償評価版 をダウンロードしてぜひお試しください。