各製品の資料を入手。
詳細はこちら →Apache Spark でOkta のデータをSQL で操作する方法
CData JDBC ドライバーを使用して、Apache Spark でOkta にデータ連携。
最終更新日:2023-09-04
この記事で実現できるOkta 連携のシナリオ
こんにちは!リードエンジニアの杉本です。
Apache Spark は大規模データ処理のための高速エンジンです。CData JDBC Driver for Okta と組み合わせると、Spark はリアルタイムでOkta のデータに連携して処理ができます。本記事では、Spark シェルに接続してOkta をクエリする方法について解説します。
CData JDBC Driver は、最適化されたデータ処理がドライバーに組み込まれているため、リアルタイムOkta と対話するための高いパフォーマンスを提供します。Okta に複雑なSQL クエリを発行すると、ドライバーはフィルタや集計など、サポートされているSQL操作を直接Okta にプッシュし、組込みSQL エンジンを使用してサポートされていない操作(SQL 関数やJOIN 操作)をクライアント側で処理します。組み込みの動的メタデータクエリを使用すると、ネイティブデータ型を使用してOkta を操作して分析できます。
CData JDBC Driver for Okta をインストール
まずは、本記事右側のサイドバーからOkta JDBC Driver の無償トライアルをダウンロード・インストールしてください。30日間無償で、製品版の全機能が使用できます。
Spark Shell を起動してOkta のデータに接続
- ターミナルを開き、Spark shell でCData JDBC Driver for Okta JAR file をjars パラメータに設定します:
$ spark-shell --jars /CData/CData JDBC Driver for Okta/lib/cdata.jdbc.okta.jar
- Shell でJDBC URL を使ってOkta に接続し、SQL Context load() function でテーブルを読み込みます。
Okta に接続するには、Domain 接続文字列プロパティをお使いのOkta ドメインに設定します。
Okta への認証にはOAuth を使用するため、カスタムOAuth アプリケーションを作成する必要があります。
カスタムOAuth アプリケーションの作成
Okta アカウントから:
- 管理者アカウントでOkta のデベロッパーエディションにサインインします。
- Admin Consoleで、Applications > Applications に移動します。
- Create App Integration をクリックします。
- Sign-in method は、OIDC - OpenID Connect を選択します。
- Application type は、Web Application を選択します。
- カスタムアプリケーションの名前を入力します。
- Grant TypeをAuthorization Code に設定します。トークンを自動的に更新したい場合は、Refresh Token もチェックしてください。
- コールバックURL を設定します。
- デスクトップアプリケーションやヘッドレスマシンでは、http://localhost:33333 または任意の別のポート番号を使用します。ここで設定したURI が、CallbackURL プロパティになります。
- Web アプリケーションの場合、コールバックURL を信頼できるリダイレクトURL に設定します。このURL は、アプリケーションへのアクセスが許可されたことを示すトークンを伴ってユーザーが戻ってくるWeb 上の場所です。
- Assignments セクションで、Limit access to selected groups を選択してグループを追加するか、グループの割り当ては一旦スキップします。
- OAuth アプリケーションを保存します。
- アプリケーションのGeneral タブに、アプリケーションのClient Id とClient Secret が表示されます。後で使用できるように、これらを記録してください。Client Id はOAuthClientId の設定に使用し、Client Secret はOAuthClientSecret の設定に使用します。
- Assignments タブを確認し、アプリケーションにアクセスする必要のあるすべてのユーザーがアプリケーションに割り当てられていることを確かめます。
- Okta API Scopes タブで、OAuth アプリケーションに付与するスコープを選択します。これらのスコープは、アプリが読み取り可能なデータを決定します。そのため、特定のビューに対するスコープを付与しないと、そのビューに対するクエリを実行する権限がドライバーに付与されません。各ビューに必要なスコープを確認するには、ヘルプドキュメントのデータモデル > ビュー のビュー固有のページを参照してください。
組み込みの接続文字列デザイナー
JDBC 接続文字列URL の作成には、Okta JDBC Driver にビルトインされたデザイナを使用できます。JAR ファイルをダブルクリックするか、コマンドラインでJAR ファイルを実行するとデザイナが開きます。
java -jar cdata.jdbc.okta.jar
接続プロパティを入力し、接続文字列をクリップボードにコピーします。
scala> val okta_df = spark.sqlContext.read.format("jdbc").option("url", "jdbc:okta:Domain=dev-44876464.okta.com;").option("dbtable","Users").option("driver","cdata.jdbc.okta.OktaDriver").load()
- 接続が完了し、データがロードされたら、テーブルスキーマが表示されます。
Okta をテンポラリーテーブルとして登録します:
scala> okta_df.registerTable("users")
-
データに対して、次のようなカスタムSQL クエリを実行します。
scala> okta_df.sqlContext.sql("SELECT Id, ProfileFirstName FROM Users WHERE Status = Active").collect.foreach(println)
コンソールで、次のようなOkta のデータを取得できました!これでOkta との連携は完了です。
CData JDBC Driver for Okta をApache Spark で使って、Okta に対して、複雑かつハイパフォーマンスなクエリを実行できます。30日の無償評価版 をダウンロードしてぜひお試しください。