Databricks(AWS)でHubDB のデータを処理・分析
Databricks は、Apache Spark を通じたデータ処理機能を提供するクラウドベースのサービスです。CData JDBC Driver と組み合わせることで、Databricks を使用してリアルタイムHubDB のデータに対してデータエンジニアリングとデータサイエンスを実行できます。この記事では、AWS でCData JDBC Driver をホストし、Databricks でリアルタイムHubDB のデータに接続して処理する方法を説明します。
最適化されたデータ処理が組み込まれたCData JDBC Driver は、リアルタイムHubDB のデータを扱う上で比類のないパフォーマンスを提供します。HubDB に複雑なSQL クエリを発行すると、ドライバーはフィルタや集計などのサポートされているSQL 操作をHubDB に直接プッシュし、サポートされていない操作(主にSQL 関数やJOIN 操作)は組み込みSQL エンジンを利用してクライアント側で処理します。組み込みの動的メタデータクエリを使用すると、ネイティブデータ型を使ってHubDB のデータを操作・分析できます。
CData JDBC Driver をDatabricks にインストール
Databricks でリアルタイムHubDB のデータを操作するには、Databricks クラスターにドライバーをインストールします。
- Databricks の管理画面に移動し、対象のクラスターを選択します。
- Libraries タブで「Install New」をクリックします。
- Library Source として「Upload」を選択し、Library Type として「Jar」を選択します。
- インストール場所(通常はC:\Program Files\CData[product_name]\lib)からJDBC JAR ファイル(cdata.jdbc.hubdb.jar)をアップロードします。
ノートブックでHubDB のデータにアクセス:Python
JAR ファイルをインストールしたら、Databricks でリアルタイムHubDB のデータを操作する準備が整いました。ワークスペースに新しいノートブックを作成します。ノートブックに名前を付け、言語としてPython を選択し(Scala も利用可能)、JDBC ドライバーをインストールしたクラスターを選択します。ノートブックが起動したら、接続を設定し、HubDB をクエリして、基本的なレポートを作成できます。
HubDB への接続を設定
JDBC Driver クラスを参照し、JDBC URL で使用する接続文字列を構築してHubDB に接続します。また、JDBC URL でRTK プロパティを設定する必要があります(Beta ドライバーを使用している場合を除く)。このプロパティの設定方法については、インストールに含まれるライセンスファイルを参照してください。
ステップ1:接続情報
driver = "cdata.jdbc.hubdb.HubDBDriver" url = "jdbc:hubdb:RTK=5246...;AuthScheme=OAuth;OAuthClientID=MyOAuthClientID;OAuthClientSecret=MyOAuthClientSecret;CallbackURL=http://localhost:33333;"
組み込みの接続文字列デザイナー
JDBC URL の作成をサポートするために、HubDB JDBC Driver に組み込まれている接続文字列デザイナーが使用できます。JAR ファイルをダブルクリックするか、コマンドラインからJAR ファイルを実行します。
java -jar cdata.jdbc.hubdb.jar
接続プロパティを入力し、接続文字列をクリップボードにコピーします。
HubDBデータソースへの接続には、パブリックHubSpotアプリケーションを使用したOAuth認証とプライベートアプリケーショントークンを使用した認証の2つの方法があります。
カスタムOAuthアプリを使用する
すべてのOAuthフローでAuthSchemeを"OAuth"に設定する必要があります。特定の認証ニーズ(デスクトップアプリケーション、Webアプリケーション、ヘッドレスマシン)に必要な接続プロパティについては、ヘルプドキュメントを確認してください。
アプリケーションを登録し、OAuthクライアント認証情報を取得するには、以下の手順を実行してください。
- HubSpotアプリ開発者アカウントにログインします。
- アプリ開発者アカウントである必要があります。標準のHubSpotアカウントではパブリックアプリを作成できません。
- 開発者アカウントのホームページで、アプリタブをクリックします。
- アプリを作成をクリックします。
- アプリ情報タブで、ユーザーが接続する際に表示される値を入力し、必要に応じて変更します。これらの値には、パブリックアプリケーション名、アプリケーションロゴ、アプリケーションの説明が含まれます。
- 認証タブで、「リダイレクトURL」ボックスにコールバックURLを入力します。
- デスクトップアプリケーションを作成する場合は、http://localhost:33333のようなローカルにアクセス可能なURLに設定します。
- Webアプリケーションを作成する場合は、ユーザーがアプリケーションを承認した際にリダイレクトされる信頼できるURLに設定します。
- アプリを作成をクリックします。HubSpotがアプリケーションとそれに関連する認証情報を生成します。
- 認証タブで、クライアントIDとクライアントシークレットを確認します。これらは後でドライバーを設定する際に使用します。
スコープの下で、アプリケーションの意図する機能に必要なスコープを選択します。
テーブルにアクセスするには、最低限以下のスコープが必要です:
- hubdb
- oauth
- crm.objects.owners.read
- 変更を保存をクリックします。
- 統合に必要な機能にアクセスできる本番ポータルにアプリケーションをインストールします。
- 「インストールURL(OAuth)」の下で、完全なURLをコピーをクリックして、アプリケーションのインストールURLをコピーします。
- コピーしたリンクをブラウザで開きます。アプリケーションをインストールする標準アカウントを選択します。
- アプリを接続をクリックします。結果のタブは閉じて構いません。
プライベートアプリを使用する
HubSpotプライベートアプリケーショントークンを使用して接続するには、AuthSchemeプロパティを"PrivateApp"に設定します。
以下の手順に従ってプライベートアプリケーショントークンを生成できます:
- HubDBアカウントで、メインナビゲーションバーの設定アイコン(歯車)をクリックします。
- 左サイドバーメニューで、統合 > プライベートアプリに移動します。
- プライベートアプリを作成をクリックします。
- 基本情報タブで、アプリケーションの詳細(名前、ロゴ、説明)を設定します。
- スコープタブで、プライベートアプリケーションがアクセスできるようにしたい各スコープに対して読み取りまたは書き込みを選択します。
- テーブルにアクセスするには、最低限hubdbとcrm.objects.owners.readが必要です。
- アプリケーションの設定が完了したら、右上のアプリを作成をクリックします。
- アプリケーションのアクセストークンに関する情報を確認し、作成を続行をクリックし、その後トークンを表示をクリックします。
- コピーをクリックして、プライベートアプリケーショントークンをコピーします。
接続するには、PrivateAppTokenを取得したプライベートアプリケーショントークンに設定します。
HubDB のデータをロード
接続を設定したら、CData JDBC Driver と接続情報を使用して、HubDB のデータをDataFrame としてロードできます。
ステップ2:データの読み取り
remote_table = spark.read.format ( "jdbc" ) \ .option ( "driver" , driver) \ .option ( "url" , url) \ .option ( "dbtable" , "NorthwindProducts") \ .load ()
HubDB のデータを表示
ロードしたHubDB のデータをdisplay 関数を呼び出して確認します。
ステップ3:結果の確認
display (remote_table.select ("PartitionKey"))
Databricks でHubDB のデータを分析
Databricks SparkSQL でデータを処理するには、ロードしたデータをTemp View として登録します。
ステップ4:ビューまたはテーブルを作成
remote_table.createOrReplaceTempView ( "SAMPLE_VIEW" )
Temp View を作成したら、SparkSQL を使用してHubDB のデータをレポート、ビジュアライゼーション、分析用に取得できます。
% sql SELECT PartitionKey, Name FROM SAMPLE_VIEW ORDER BY Name DESC LIMIT 5
HubDB からのデータは、対象のノートブックでのみ利用可能です。他のユーザーと共有したい場合は、テーブルとして保存します。
remote_table.write.format ( "parquet" ) .saveAsTable ( "SAMPLE_TABLE" )
CData JDBC Driver for HubDB の30日間無償トライアルをダウンロードして、Databricks でリアルタイムHubDB のデータの操作をはじめましょう。ご不明な点があれば、サポートチームにお問い合わせください。