Apache Spark でAccess のデータをSQL で操作する方法

CData JDBC ドライバーを使用して、Apache Spark でAccess にデータ連携。

杉本和也
リードエンジニア

最終更新日:2023-09-04

この記事で実現できるAccess 連携のシナリオ

こんにちは!リードエンジニアの杉本です。

Apache Spark は大規模データ処理のための高速エンジンです。CData JDBC Driver for Access と組み合わせると、Spark はリアルタイムでAccess のデータに連携して処理ができます。本記事では、Spark シェルに接続してAccess をクエリする方法について解説します。

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

CData JDBC Driver for Access をインストール

まずは、本記事右側のサイドバーからAccess JDBC Driver の無償トライアルをダウンロード・インストールしてください。30日間無償で、製品版の全機能が使用できます。

Spark Shell を起動してAccess のデータに接続

  1. ターミナルを開き、Spark shell でCData JDBC Driver for Access JAR file をjars パラメータに設定します: $ spark-shell --jars /CData/CData JDBC Driver for Access/lib/cdata.jdbc.access.jar
  2. Shell でJDBC URL を使ってAccess に接続し、SQL Context load() function でテーブルを読み込みます。

    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テーブルとして、単一ファイルの場合は単一テーブルとして扱われます。

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

    JDBC 接続文字列URL の作成には、Access JDBC Driver にビルトインされたデザイナを使用できます。JAR ファイルをダブルクリックするか、コマンドラインでJAR ファイルを実行するとデザイナが開きます。

    java -jar cdata.jdbc.access.jar

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

    scala> val access_df = spark.sqlContext.read.format("jdbc").option("url", "jdbc:access:DataSource=C:/MyDB.accdb;").option("dbtable","Orders").option("driver","cdata.jdbc.access.AccessDriver").load()
  3. 接続が完了し、データがロードされたら、テーブルスキーマが表示されます。
  4. Access をテンポラリーテーブルとして登録します:

    scala> access_df.registerTable("orders")
  5. データに対して、次のようなカスタムSQL クエリを実行します。

    scala> access_df.sqlContext.sql("SELECT OrderName, Freight FROM Orders WHERE ShipCity = New York").collect.foreach(println)

    コンソールで、次のようなAccess のデータを取得できました!これでAccess との連携は完了です。

    Access をApache Spark から取得

CData JDBC Driver for Access をApache Spark で使って、Access に対して、複雑かつハイパフォーマンスなクエリを実行できます。30日の無償評価版 をダウンロードしてぜひお試しください。

Apache Spark の設定

関連コンテンツ

トライアル・お問い合わせ

30日間無償トライアルで、CData のリアルタイムデータ連携をフルにお試しいただけます。記事や製品についてのご質問があればお気軽にお問い合わせください。