Databricks: SELECT version() の実行を無効化するオプション



CData Databricks ドライバーに、接続確立時に SELECT version() クエリの実行を無効化するオプションが追加されました。この機能は、不要なクエリのオーバーヘッドを削減することで、高スループット環境でのパフォーマンスを向上させるために設計されています。


背景

デフォルトでは、CData Databricks ドライバーは接続ごとに SELECT version() クエリを1回実行し、SQL Warehouse がアクティブで応答可能な状態であることを確認します。これにより接続の信頼性が確保されますが、以下のような環境ではパフォーマンスに影響を与える可能性があります。

  • 接続の確立頻度が高い環境
  • 複数のスレッドが同時に実行される環境
  • 接続速度が重要なパフォーマンス重視のアプリケーション

接続パフォーマンスの向上

SQL Warehouse の可用性チェックを無効化すると、以下のメリットがあります。

  • 接続時間の短縮: version クエリ実行のオーバーヘッドを排除
  • スループットの向上: マルチスレッドアプリケーションでの接続確立を高速化
  • リソース使用量の削減: Databricks SQL Warehouse へのクエリ負荷を軽減
  • スケーラビリティの強化: 多数の同時接続を確立する際のパフォーマンスを改善
重要事項: このチェックを無効化すると、エラー処理の責任がアプリケーション側に移ります。SQL Warehouse の接続問題をアプリケーション側で独自に処理できることを確認してください。

設定方法

新しい CheckSQLWarehouseAvailability プロパティを False に設定すると、SELECT version() の実行を無効化できます。

接続文字列で以下のように設定します。

  • プロパティ: CheckSQLWarehouseAvailability
  • : Boolean
  • デフォルト: True
  • 場所: Advanced Properties
  • 説明: 接続時に Databricks SQL Warehouse の可用性をチェックするかどうかを指定します

False に設定すると、ドライバーは SELECT version() クエリを実行しなくなり、接続時間が短縮されます。

接続文字列での設定

接続文字列に CheckSQLWarehouseAvailability プロパティを追加します。

jdbc:databricks://[ServerHostname]:443/[HTTPPath];Token=[PersonalAccessToken];CheckSQLWarehouseAvailability=False;

DSN およびその他のウィザードでの設定

ODBC 接続や接続ウィザードを持つその他のプラットフォームでは、UI でプロパティを追加します。

  1. (ODBC) ODBC データソースアドミニストレーターを開きます
  2. Databricks 接続を選択し、Configure/Edit などをクリックします
  3. Advanced セクションに移動します
  4. CheckSQLWarehouseAvailabilityFalse に設定します
  5. OK/Save などをクリックして設定を保存します

実装例

JDBC 接続の例

import java.sql.Connection;
import java.sql.DriverManager;

public class DatabricksConnection {
    public static void main(String[] args) {
        String url = "jdbc:databricks://your-server:443/your-http-path;" +
                    "Token=your-personal-access-token;" +
                    "CheckSQLWarehouseAvailability=False;";

        try (Connection conn = DriverManager.getConnection(url)) {
            // SELECT version() チェックなしで接続を確立
            System.out.println("Connected successfully with optimized performance");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

Python 接続の例

import jaydebeapi

# パフォーマンス最適化を適用した接続パラメータ
connection_url = "jdbc:databricks://your-server:443/your-http-path"
connection_properties = {
    "Token": "your-personal-access-token",
    "CheckSQLWarehouseAvailability": "False"
}

# 接続を確立
conn = jaydebeapi.connect(
    "cdata.jdbc.databricks.DatabricksDriver",
    connection_url,
    connection_properties,
    "path/to/cdata.jdbc.databricks.jar"
)

print("Connection established with enhanced performance")
conn.close()

ユースケース

この最適化は、以下のような場面で特に効果的です。

  • ETL プロセス: 大量のデータを処理するアプリケーション
  • マイクロサービス: 短期間の接続を頻繁に確立するアプリケーション
  • 接続プーリング: 接続プールの初期化速度が重要な環境
  • マルチテナントアプリケーション: 複数の同時ユーザーにサービスを提供するシステム

実際に試してみましょう

CData は、業界標準のドライバーを通じて、レポートツール、データベース、カスタムアプリケーションから Databricks へのシームレスな接続を実現します。BI、レポート、分析、ETL ツール、およびカスタムソリューションと Databricks データを簡単に統合できます。CData Databricks ドライバーの30日間無料トライアルをダウンロードして、今すぐお試しください。