Azure DatabricksにSalesforce等のデータをJDBCで統合する


はじめに

Azure DatabricksはSparkベースの解析プラットフォームで、Azure Blob、Azure Data Lake、Azure SQL Databasesといった、複数のソースから読み取ったデータをSparkで変換し、画期的なインサイトを得られます。

この記事では、Azure DatabricksからSalesforceにJDBCで接続する方法を記述します。
今回はSalesforceとの接続方法を取り上げますが、同じ手順で Eloqua、IBM Db2、Oracleやその他のデータソースにJDBCで接続できます。

Salesforce用 DataDirect JDBCドライバをダウンロード&インストールする

1.Salesforce JDBCドライバをAzure Databricksにアップロードする前に、ローカルコンピュータにDataDirect Salesforce JDBCドライバをまずインストールします。

2.DataDirect Salesforce JDBC ドライバをこちらからダウンロードしてください。

3.以下のコマンドをターミナルに入力するか、jarファイルのダブルクリックにて、ドライバをインストールします。

java -jar PROGRESS_DATADIRECT_JDBC_SF_ALL.jar

4.対話型のjavaインストーラが起動しますので、ライセンス版、評価版にかかわらず、DataDirect for Salesforce JDBCドライバを任意の場所にインストールしてください。

5.Salesforce JDBCドライバの他に、試用版として他のドライバも同フォルダに複数インストールされますので、他の接続先検証もできます。

Salesforce JDBCドライバをAzure Databricksにアップロードする

1.Salesforce JDBCドライバをインストールしたフォルダに移動します。 フォルダのパスは以下の通りです。

C:\Program Files\Progress\DataDirect\JDBC_60\lib\sforce.jar

2.[Clusters]に移動し、ワークロードを実行するクラスターを選択してください。
クラスター内で[Library]タブを開き、[Install New]をクリックします。 上記パスのSalesforceドライバを選択し、[Install]をクリックして、以下に示すようにドライバをクラスター内にインストールします。

Salesforceに接続する

1.新しいノートブックを開き、次のコードを実行してJDBCドライバがあるかどうか確認してください。

Class.forName("com.ddtek.jdbc.sforce.SForceDriver")

2.以下のコードを実行してSalesforceに接続するためのJDBC URLを作成してください。コード内のユーザーネーム、パスワード、セキュリティトークン (任意) はご自分のものに置き換えてください。

val jdbcHostname = "login.salesforce.com"
val jdbcSecurityToken = "Your Security Token"

// Create the JDBC URL without passing in the user and password parameters.
val jdbcUrl = s"jdbc:datadirect:sforce://${jdbcHostname};SecurityToken=${jdbcSecurityToken}"

// Create a Properties() object to hold the parameters.
import java.util.Properties
val connectionProperties = new Properties()

connectionProperties.put("user", "Your username")
connectionProperties.put("password", "Your password")

3.以下のコマンドを実行して、ドライバクラス名を設定します。

val driverClass = "com.ddtek.jdbc.sforce.SForceDriver"
connectionProperties.setProperty("Driver",driverClass)

4.以下のコードを実行することで、Salesforceからデータの読み取りができるようになりました。以下に、Salesforceに接続して「Opportunity」テーブルのスキーマを印刷するコードの例を示します。

val opportunity_table = spark.read.jdbc(jdbcUrl, "Opportunity", connectionProperties)
opportunity_table.printSchema

5.まず、「Opportunity」テーブルの検索およびデータの印刷ができるようになります。

display(opportunity_table.select("AMOUNT", "FISCALQUARTER").groupBy("FISCALQUARTER").avg("AMOUNT"))

6.これで、変換を適用するか、別のデータソースへ接続し、データを結合して変換を適用するかのいずれかができるようになりました。

Azure Databricksで接続できるデータソースの他に、Salesforce, Eloqua, IBM DB2, Oracleなど外部のデータソースを接続して、様々な場所に格納されたデータの統合分析ができるようになります。

これらのさまざまなデータソースには、DataDirect JDBCコネクタを使用することで接続が可能です。