製品をチェック

Databricks Data Provider の30日間無償トライアルをダウンロード

 30日間の無償トライアルへ

製品の詳細

Databricks アイコン Databricks ADO.NET Provider 相談したい

Databricks 連携のパワフルな.NET アプリケーションを素早く作成して配布。

Blazor でDatabricks のデータにリアルタイムで連携するアプリを構築

ASP.NET Core Blazor C# でDatabricks にSQL でクエリ。

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

最終更新日:2021-11-03
databricks ロゴ

CData

ado ロゴ画像
Blazor ロゴ

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

Blazor は、.NET を使って対話型のクライアント側Web UI を構築するためのフレームワークです。JavaScript の代わりにC# を使って、UI を作れるところが魅力です。また、既存の.NET ライブラリや.NET エコシステムを使うことができる利点があります。

CData ADO.NET Provider for Databricks は、LINQ やEntity Framework などの標準のADO.NET インターフェースを使ってDatabricks を操作可能にします。Blazor が.NET Core 対応をしているため、Server Side Blazor からADO.NET Provider を使うことができます。この記事では、Server Side Blazor からDatabricks に接続して直接SQL クエリを実行する方法を説明します。

Blazor はADO.NET Provider の利用が可能

Databricks とのデータ連携について

Databricks のライブデータへのアクセスと統合は、CData を活用することでかつてないほど簡単になります。ユーザーは、CData のコネクティビティを利用して以下のことを実現しています。

  • ランタイムバージョン 9.1 - 13.X 、およびPro またはClassic Databricks SQL バージョンに至るすべてのバージョンのDatabricks にアクセスできます。
  • あらゆるホスティングソリューションと互換性があるため、Databricks を希望する環境で利用できます。
  • 個人用アクセストークン、Azure サービスプリンシパル、Azure AD など、さまざまな方法でセキュアな認証を行います。
  • Databricks ファイルシステム、Azure Blog Storage、AWS S3 Storage を使用してDatabricks にデータをアップロードします。

ユーザーの多くはCData のソリューションを使用して異なるシステムからDatabricks データレイクハウスにデータを移行していますが、CData のリアルタイム接続ソリューションを使ってデータベースとDatabricks 間の接続をフェデレートしているケースもあります。このようなケースでは、SQL Server のリンクサーバーやPolybase を使用して、既存のRDBM 内からDatabricks にリアルタイムアクセスしています。

Databricks の一般的な使用事例と、CData のソリューションがデータに関する問題の解決にどのように役立つのかについては、ブログをご覧ください:What is Databricks Used For? 6 Use Cases

CData ADO.NET Provider for Databricks のインストール

CData ADO.NET Provider は、通常であればRDB に接続するフレームワークである ADO.NET DataAdapter やLinqToSQL(もしくはDapper などのORM を挟んでもいいです)であり、Databricks のデータへもRDB と同感覚でアクセスが可能になります。

CData のWebsite からProvider をダウンロードして、マシンにインストールします。NuGet からインストールすることも可能です。Databricks ADO.NET Data Provider で検索してください。

NuGet でADO.NET Databricks Provider をインストール

Blazor でDatabricks にデータ連携するアプリを構築

Blazor にADO.NET Provider for Databricks を接続

  • Visual Studio を立ち上げて、Blazor アプリのプロジェクトを作成します。
  • Blazor アプリを作成
  • ソリューションエクスプローラーで「依存関係」から右クリックで「プロジェクト参照の追加」をクリック。
  • 参照マネージャーが開くので、「参照」ボタンをクリックして、先ほどインストールしたADO.NET Provider の.dll を選択します。「C:\Program Files\CData\CData ADO.NET Provider for Databricks 2019J\lib etstandard2.0」内のSystem.Data.CData.Databricks.dll」を参照に選びます。
  • ADO.NET for Databricks の.dll をBlazor アプリから参照

Blazor でDatabricks のデータをSELECT

サンプルプロジェクトの「Page」→「Index.razor」を開きます。

以下のコードを書きます。使っているクエリはおなじみの標準SQL です。Databricks 固有のAPI を書かなくてもRDB と同感覚でSQL が書けるところがADO.NET Prover for Databricks の強味です。
@page "/" @using System.Data; @using System.Data.CData.Databricks;

Hello, world!

Welcome to your Data app.
@using (DatabricksConnection connection = new DatabricksConnection( "Server=127.0.0.1;Port=443;TransportMode=HTTP;HTTPPath=MyHTTPPath;UseSSL=True;User=MyUser;Password=MyPassword;")) { var sql = "SELECT City, CompanyName FROM Customers WHERE Country = 'US'"; var results = new DataTable(); DatabricksDataAdapter dataAdapter = new DatabricksDataAdapter(sql, connection); dataAdapter.Fill(results); @foreach (DataColumn item in results.Rows[0].Table.Columns) { } @foreach (DataRow row in results.Rows) { @foreach (var column in row.ItemArray) { } }
@item.ColumnName
@column.ToString()
}

Databricks クラスターに接続するには、以下の説明に従ってプロパティを設定します。

Note:Databricks インスタンスで必要な値は、クラスターに移動して目的のクラスターを選択し、Advanced Options の下にあるJDBC/ODBC タブを選択することで見つけることができます。

  • Database:Databricks データベース名に設定。
  • Server:Databricks クラスターのサーバーのホスト名に設定。
  • HTTPPath:Databricks クラスターのHTTP パスに設定。
  • Token:個人用アクセストークンに設定(この値は、Databricks インスタンスのユーザー設定ページに移動してアクセストークンタブを選択することで取得できます)。

プロジェクトをリビルドして実行します。このようにDatabricks からデータを直接取得し、HTML テーブル形式にレンダリングしています。

Blazor アプリからDatabricks のデータをクエリ

もちろんSaaS データソースへの接続の場合には、RDB 向けのドライバーと違い最終的にはHTTP リクエストが行われるので、サーバーサイド Blazor としてサーバーサイドから実行されるのか、クライアントサイド Blazor として、実行中のブラウザからHTTPリクエストが行われるのかの違いはあります。そのあたりはネットワークやプロキシの設定として注意が必要でしょう。設定はコード内の接続プロパティで可能です。

まとめ

このようにサーバーサイドBlazor アプリから簡単にADO.NET Provider を使ってDatabricks にリアルタイムでデータ取得を行うアプリを作ることができました。Blazor が.NET Core、フレームワークのツール群を使えるというメリットを活かすことができます。今回はSELECT * でしたが、フィルタリングやJOIN も可能です。INSERT、UPDATE、DELETE も標準SQL で書くことができます。是非、30日の無償評価版でシンプルかつパワフルなADO.NET Provider でのサーバーサイドBlazor 連携をお試しください。

関連コンテンツ

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

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