Apache Spark でLinear のデータをSQL で操作する方法
Apache Spark は大規模データ処理のための高速エンジンです。CData JDBC Driver for Linear と組み合わせると、Spark はリアルタイムでLinear のデータに連携して処理ができます。本記事では、Spark シェルに接続してLinear をクエリする方法について解説します。
CData JDBC Driver は、最適化されたデータ処理がドライバーに組み込まれているため、リアルタイムLinear と対話するための高いパフォーマンスを提供します。Linear に複雑なSQL クエリを発行すると、ドライバーはフィルタや集計など、サポートされているSQL操作を直接Linear にプッシュし、組込みSQL エンジンを使用してサポートされていない操作(SQL 関数やJOIN 操作)をクライアント側で処理します。組み込みの動的メタデータクエリを使用すると、ネイティブデータ型を使用してLinear を操作して分析できます。
CData JDBC Driver for Linear をインストール
まずは、本記事右側のサイドバーからLinear JDBC Driver の無償トライアルをダウンロード・インストールしてください。30日間無償で、製品版の全機能が使用できます。
Spark Shell を起動してLinear のデータに接続
- ターミナルを開き、Spark shell でCData JDBC Driver for Linear JAR file をjars パラメータに設定します:
$ spark-shell --jars /CData/CData JDBC Driver for Linear/lib/cdata.jdbc.linear.jar - Shell でJDBC URL を使ってLinear に接続し、SQL Context load() function でテーブルを読み込みます。
Linear への認証には、個人用 API キーまたは OAuth 2.0 を使用できます。ご自身の Linear アカウントで接続する場合は、API キーを使うのが最も手軽です。
API キーによる認証
以下の接続プロパティを設定します。
- AuthScheme:APIKey に設定します。
- APIKey:Linear の個人用 API キー。
個人用 API キーを作成するには、Linear にログインして Settings > Security & access > Personal API keys を開き、New API key を選択して作成します。キーは一度しか表示されないため、すぐにコピーしておきましょう。
OAuth による認証
OAuth を使用するには、Linear にカスタム OAuth アプリケーションを登録する必要があります(Settings > API > OAuth applications)。登録すると OAuthClientId と OAuthClientSecret が発行されます。対応しているフローは以下の 2 つです。
- Authorization code:AuthScheme を OAuth、InitiateOAuth を GETANDREFRESH に設定し、OAuthClientId、OAuthClientSecret、およびアプリケーションで定義した CallbackURL(例:http://localhost:33333)を指定します。ドライバーがブラウザで Linear を開くので、アクセスを許可してください。
- Client credentials:AuthScheme を OAuthClient に設定し、OAuthClientId と OAuthClientSecret を指定します。アプリケーション自体を認証するためブラウザ操作は不要で、マシン間(M2M)連携に適しています。
デフォルトでは、ドライバーは read,write スコープをリクエストします。アクセストークンは有効期限が切れると自動で更新されます。
組み込みの接続文字列デザイナー
JDBC 接続文字列URL の作成には、Linear JDBC Driver にビルトインされたデザイナを使用できます。JAR ファイルをダブルクリックするか、コマンドラインでJAR ファイルを実行するとデザイナが開きます。
java -jar cdata.jdbc.linear.jar接続プロパティを入力し、接続文字列をクリップボードにコピーします。
scala> val linear_df = spark.sqlContext.read.format("jdbc").option("url", "jdbc:linear:AuthScheme=APIKey;APIKey=myAPIKey;").option("dbtable","Team").option("driver","cdata.jdbc.linear.LinearDriver").load() - 接続が完了し、データがロードされたら、テーブルスキーマが表示されます。
Linear をテンポラリーテーブルとして登録します:
scala> linear_df.registerTable("team")-
データに対して、次のようなカスタムSQL クエリを実行します。
scala> linear_df.sqlContext.sql("SELECT id, name FROM Team WHERE key = ENG").collect.foreach(println)コンソールで、次のようなLinear のデータを取得できました!これでLinear との連携は完了です。
CData JDBC Driver for Linear をApache Spark で使って、Linear に対して、複雑かつハイパフォーマンスなクエリを実行できます。30日の無償評価版 をダウンロードしてぜひお試しください。