Azure Databricks でAccess のデータに接続してデータ処理を行う方法

Jerod Johnson
Jerod Johnson
Senior Technology Evangelist
CData JDBC Driver、Azure、Databricks を使用して、リアルタイムAccess のデータのデータエンジニアリングとデータサイエンスを実行。

Databricks は、Apache Spark によるデータ処理機能を提供するクラウドベースのサービスです。CData JDBC ドライバと組み合わせることで、Databricks を使用してリアルタイムAccess のデータのデータエンジニアリングとデータサイエンスを実行できます。この記事では、Azure で CData JDBC ドライバをホストし、Databricks からリアルタイムAccess のデータに接続してデータを処理する方法を説明します。

最適化されたデータ処理機能を組み込んだ CData JDBC ドライバは、リアルタイムAccess のデータとのインタラクションにおいて卓越したパフォーマンスを発揮します。Access に対して複雑な SQL クエリを発行すると、ドライバーはフィルタや集計などのサポートされている SQL 操作を直接Accessにプッシュし、サポートされていない操作(主に SQL 関数や JOIN 操作)は組み込みの SQL エンジンを使用してクライアント側で処理します。動的メタデータクエリ機能により、ネイティブのデータ型を使用してAccess のデータの操作・分析が可能です。

CData JDBC ドライバを Azure にインストール

Databricks でリアルタイムAccess のデータを操作するには、Azure Data Lake Storage(ADLS)を通じてドライバーをインストールします。(以前のバージョンの記事で説明していた DBFS を介した接続方法は非推奨となっていますが、廃止日は公開されていません。

  1. JDBC JAR ファイルを任意の Blob コンテナにアップロードします(例:「databrickslibraries」ストレージアカウントの「jdbcjars」コンテナ)。
  2. ストレージアカウントから「セキュリティとネットワーク」を展開し、「アクセスキー」をクリックしてアカウントキーを取得します。使用するキーを表示してコピーしてください。
  3. コンテナに移動し、JAR を保存している特定のコンテナを開き、JDBC JAR ファイルのエントリを選択して JAR ファイルの URL を取得します。ファイルの詳細が開き、URL をクリップボードにコピーするボタンがあります。この値は以下のようになります(「blob」の部分はストレージアカウントの種類によって異なる場合があります):
    https://databrickslibraries.blob.core.windows.net/jdbcjars/cdata.jdbc.salesforce.jar
  4. Databricks クラスターの「Configuration」タブで「Edit」ボタンをクリックし、「Advanced options」を展開します。そこで、以下の Spark オプション(JAR URL のドメイン名から派生)に、コピーしたアカウントキーを値として追加し、「Confirm」をクリックします: spark.hadoop.fs.azure.account.key.databrickslibraries.blob.core.windows.net
  5. Databricks クラスターの「Libraries」タブで「Install new」をクリックし、ADLS オプションを選択します。ドライバー JAR の ABFSS URL(これも JAR URL のドメイン名から派生)を指定し、「Install」をクリックします。ABFSS URL は以下のようになります:
    abfss://jdbcjars@databrickslibraries.blob.core.windows.net/cdata.jdbc.salesforce.jar

Databricks からAccessに接続

JAR ファイルがインストールされたら、Databricks でリアルタイムAccess のデータを操作する準備が整いました。まず、ワークスペースで新しいノートブックを作成します。ワークブックに名前を付け、言語として Python が選択されていることを確認し(デフォルトで選択されているはずです)、「Connect」をクリックして「General Compute」から JDBC ドライバーをインストールしたクラスターを選択します(デフォルトで選択されているはずです)。

Accessへの接続を設定

JDBC ドライバのクラスを参照し、JDBC URL で使用する接続文字列を構築してAccessに接続します。また、JDBC URL に RTK プロパティを設定する必要があります(Beta ドライバーを使用している場合を除く)。このプロパティの設定方法については、インストールに含まれるライセンスファイルを参照してください。

driver = "cdata.jdbc.access.AccessDriver"
url = "jdbc:access:RTK=5246...;DataSource=C:/MyDB.accdb;"

組み込みの接続文字列デザイナー

JDBC URL の構築には、Access JDBC Driver に組み込まれている接続文字列デザイナーを使用できます。JAR ファイルをダブルクリックするか、コマンドラインから JAR ファイルを実行してください。

java -jar cdata.jdbc.access.jar

接続プロパティを入力し、接続文字列をクリップボードにコピーします。

Access接続の設定方法

ローカルファイルへの接続設定

ローカル環境からAccess への接続は非常にシンプルです。ConnectionTypeLocal に設定することで、CRUD 操作(SELECT、INSERT、UPDATE、DELETE)をすべて実行できます。接続にはDataSource プロパティに以下のようなAcces sデータベースファイルのフルパスを指定します。

C:\Users\Public\Documents\MyDatabase.accdb

詳細な接続手順については、ヘルプドキュメントの「はじめに」セクションをご参照ください。

クラウドストレージ上のAccess ファイルへの接続設定

各種クラウドストレージに保存されているAccess ファイルへのアクセスにも対応しています。ただし、クラウド上のファイルに対するデータ操作は、INSERT、UPDATE、DELETE に制限されますのでご注意ください。

S3、Google Driver、OneDrive など、各種クラウドストレージ内のAccess ファイルへの接続方法はこちらの記事をご確認ください。

クラウド上のファイルを更新したい場合は、以下の手順で実施いただけます。

  1. 対応するCData ドライバーを利用し、クラウドサービスからAccess ファイルをダウンロード
  2. Access ドライバーを使用して、ローカル環境でファイルを編集
  3. クラウドサービス用ドライバーのストアドプロシージャを使用して、更新ファイルをアップロード

具体例として、SharePoint 上のファイルを更新する場合の手順をご紹介します。

  1. CData SharePoint ドライバーのDownloadDocument プロシージャを使用してファイルを取得
  2. CData Access ドライバーでファイルの更新を実施
  3. SharePoint ドライバーのUploadDocument プロシージャで更新内容を反映

DataSource 接続プロパティの設定について補足いたします。接続先のクラウドストレージを識別するための一意の接頭辞を指定し、続けて目的のファイルパスまたはフォルダパスを記述します。フォルダを指定した場合は1ファイルが1テーブルとして、単一ファイルの場合は単一テーブルとして扱われます。

Access のデータの読み込み

接続を設定したら、CData JDBC ドライバと接続情報を使用してAccess のデータをデータフレームとして読み込むことができます。

remote_table = spark.read.format ( "jdbc" ) \
	.option ( "driver" , driver) \
	.option ( "url" , url) \
	.option ( "dbtable" , "Orders") \
	.load ()

Access のデータの表示

読み込んだAccess のデータを display 関数で確認してみましょう。

display (remote_table.select ("OrderName"))

Azure Databricks でAccess のデータを分析

Databricks SparkSQL でデータを処理したい場合は、読み込んだデータを一時ビューとして登録します。

remote_table.createOrReplaceTempView ( "SAMPLE_VIEW" )

以下の SparkSQL で分析用のAccess のデータを取得できます。

result = spark.sql("SELECT SAMPLE_VIEW.Freight, Customers.ContactName FROM Customers INNER JOIN SAMPLE_VIEW ON Customers.CustomerId=SAMPLE_VIEW.CustomerId")

Access からのデータは、対象のノートブック内でのみ利用可能です。他のユーザーと共有したい場合は、テーブルとして保存してください。

remote_table.write.format ( "parquet" ) .saveAsTable ( "SAMPLE_TABLE" )

CData JDBC Driver for Access の30日間の無償トライアルをダウンロードして、Azure Databricks でリアルタイムAccess のデータを活用してみてください。ご不明な点があれば、サポートチームまでお気軽にお問い合わせください。

はじめる準備はできましたか?

Access Driver の無料トライアルをダウンロードしてお試しください:

 ダウンロード

詳細:

Access Icon Access JDBC Driver お問い合わせ

Microsoft Access データベースに連携するJava アプリケーションを高速開発。