こんにちは。CData Software Japan リードエンジニアの杉本です。
今日はクラウドサービスのビッグデータ処理サービスである Databricks で CData JDBC Driverを利用する方法を紹介します。
Databricks とは?
Databricks は オープンソースの ビッグデータ処理基盤である Apache Spark をクラウドベースで提供しているサービスです。
databricks.com
通常、Apache Sparkやその周辺のエコシステムのツール・フレームワークを自社で導入しようとすると、インフラ周りの構成で煩わしさが多く発生しますが、Databricksを使うことでそういった煩わしさから脱却し、メインとなる分析作業に注力することができるようになります。
また、最近 Databricks は大きな資金調達を行って話題になりました。これからの成長にも期待が高まるビッグデータ処理のクラウドサービスと言えます。
jp.techcrunch.com
本記事のシナリオ
通常 Databricks では、Azure Blob Storage や Data Lakeに存在しているCSV、JSON、Parquetなどのバイナリベースの構造データ、ないしSQL ServerやCosmos DBといったRDB・NoSQLサービスからデータを取り込んで、分析するというアプローチが多いかと思います。
https://docs.microsoft.com/ja-jp/azure/databricks/data/data-sources/
しかしながら、今や分析対象となるデータソースはそういったバイナリデータやRDB・NoSQLのdataにとどまらず、SalesforceやDynamics 365といったクラウドサービス上にも数多く存在しています。
そこで CData JDBC Driverを活用することにより、Databricks から シームレスにクラウドサービスのデータソースをロード、分析できるようになります。
https://www.cdata.com/jp/jdbc/
この記事では、実際にDatabricksへSalesforceのデータをロードして、分析できるようにするための手順を解説します。
必要なもの
- CData Salesforce JDBC Driver
- Databricks Account : 本記事ではAzure Databricksを使用しました。
- Salesforce Account
CData Salesforce JDBC Driver のインストール
まず、CData Salesforce JDBC Driver をインストールします。トライアルは以下のURLから入手できます。
https://www.cdata.com/jp/drivers/salesforce/jdbc/
ダウンロード後、exeファイルを実行し、セットアップを進めます。
Databricks に JDBC Driver をインストールする
次に、Databricks の管理画面に移動し、対象のクラスターを選択します。
「Libraries」タブから「Install New」をクリックします。ここから接続に必要なJDBC jarファイルをアップロードします。
JDBC の jarファイルは「C:\Program Files\CData\CData JDBC Driver for Salesforce 2019J\lib」のフォルダに配置されている「cdata.jdbc.salesforce.jar」ファイルです。
「cdata.jdbc.salesforce.jar」をドラッグ・アンド・ドロップして、対象のクラスターにインストールします。
これで、実行準備は完了です。
Notebook で Salesforce データにアクセスする:Python
それでは Notebook を立ち上げて、Salesforce データにアクセスしてみましょう。
今回は Python を使いますが、Scalaでも同様に実行可能です。
LangauageはPythonを選択し、先程JDBCをインストールしたクラスターを選択します。
Notebook が立ち上がったら、以下のコードをそれぞれ実行していきます。
最初に接続情報を定義します。 URLはSalesforceのログイン情報とセキュリティトークンを指定します。
また、CData JDBC Driver用の特殊ライセンスをRTKとして指定します。この入手方法に関してはCData サポート まで連絡ください。
driver = "cdata.jdbc.salesforce.SalesforceDriver"
url = "jdbc:salesforce:User=XXXX;Password=XXXXX;SecurityToken=XXXXX;RTK=XXXX;"
table = "account"
次に先程の接続情報をもとに、CData JDBC Driver経由でSalesforceのデータをデータフレームとして読み込みます。
remote_table = spark.read.format("jdbc")\
.option("driver", driver)\
.option("url", url)\
.option("dbtable", table)\
.load()
読み込んだ結果は以下のコマンドで確認できます。これでDatabricks上でSalesforceのデータを扱えるようになりました。
display(remote_table.select("name"))
Databricks の SparkSQLでデータを処理したい場合は、Temp Viewとして登録します。
remote_table.createOrReplaceTempView("SAMPLE_VIEW")
以下のように SparkSQLでデータを取得し、分析することができます。
%sql
SELECT Name,AnnualRevenue FROM SAMPLE_VIEW Order by AnnualRevenue desc limit 5
なお、データフレームは対象のNotebook内だけのデータなので、他のユーザーと一緒に利用する場合はテーブルとして保存しておきましょう。
remote_table.write.format("parquet").saveAsTable("SAMPLE_TABLE")
おわりに
とても手軽に Databricks で Salesforce のデータを扱えることがイメージできたのではないかと思います。
CData では Salesforce 以外にも数多くの JDBC Driver を提供しています。
kintone や Sansan といった日本のクラウドサービスにも対応しているので、是非お好みのデータソースで試してみてください。
https://www.cdata.com/jp/jdbc/
関連コンテンツ