Databricks JDBC ドライバー (Simba) のドライバー機能設定
このページは、JDBCドライバ(レガシー)バージョン3未満のバージョンに適用されます。Databricks JDBCドライバのバージョン3以降については、 Databricks JDBCドライバを参照してください。
このページでは、 Databricks JDBC ドライバーの特別な高度なドライバー機能設定を構成する方法について説明します。
Databricks JDBC ドライバーには、次の特殊で高度なドライバー機能設定が用意されています。
JDBC での ANSI SQL-92 クエリのサポート
従来の Spark JDBC ドライバーは、ANSI SQL-92 方言の SQL クエリを受け入れ、それをサーバーに送信する前に Databricks SQL に変換します。
アプリケーションが Databricks SQL を直接生成するか、Databricks 固有の非 ANSI SQL-92 構文を使用する場合は、接続構成でUseNativeQuery=1を設定します。この設定により、SQL クエリが変換されずにそのまま Databricks に渡されます。
デフォルトのカタログとスキーマ
デフォルトのカタログとスキーマを指定するには、JDBC接続URLにConnCatalog=<catalog-name>;ConnSchema=<schema-name>を追加します。
追跡用のクエリタグ
プレビュー
この機能はプライベートプレビュー段階です。アクセスをリクエストするには、アカウント チームにお問い合わせください。
追跡と分析の目的で、 SQLクエリに key-value タグを添付します。 クエリ タグは、クエリの識別と分析のためにsystem.query.historyテーブルに表示されます。
接続にクエリ タグを追加するには、 JDBC接続 URL にssp_query_tagsパラメーターを含めます。
jdbc:databricks://<server-hostname>:443;httpPath=<http-path>;ssp_query_tags=key1:value1,key2:value2
クエリ タグを、コンマで区切られたキーと値のペアとして定義します。各キーと値はコロンで区切られます。たとえば、 key1:value1,key2:value2 。
JDBCで大きなクエリ結果を抽出する
大規模なクエリー結果を抽出するときに最高のパフォーマンスを実現するには、以下の最適化が含まれている最新バージョンのJDBCドライバーを使用してください。
JDBC でのArrowのシリアル化
JDBC ドライバー バージョン 2.6.16 以降では、 Apache Arrow を使用した最適化されたクエリ結果のシリアル化形式がサポートされています。
JDBC での Cloud Fetch
JDBCドライバー バージョン 2.6.19 以降は、 Databricksデプロイメントで構成されたクラウド ストレージを通じてクエリ結果をフェッチする機能であるクラウド フェッチをサポートしています。
クエリを実行すると、Databricks は結果をワークスペースのクラウドストレージに、最大 20 MB の Arrow シリアル化ファイルとして保存します。クエリが完了すると、ドライバーはフェッチリクエストを送信し、Databricksは結果ファイルへの署名付きURLを返します。ドライバーはこれらのURLを使用して、Amazon S3から結果を直接ダウンロードします。
Cloud Fetch は、1 MB を超えるクエリ結果にのみ適用されます。 ドライバーは Databricks から小さな結果を直接取得します。
Databricksは、蓄積されたファイルを自動的にガベージコレクションし、24時間後に削除対象としてマークし、さらに24時間後に完全に削除します。
Cloud Fetch には、バージョニングが有効になっていない E2 ワークスペースとAmazon S3バケットが必要です。 バージョニングが有効になっている場合は、クラウドフェッチを有効にするための高度な構成を参照してください。
ネットワークの前提条件
Cloud Fetch は、結果ファイルをAmazon S3から直接ダウンロードします。 クライアント マシンがS3エンドポイントに到達できない場合、クラウド フェッチは失敗します。 以下の点を確認してください。
- クライアントマシンは、ワークスペースのルートS3バケットへのネットワークアクセス権を持っている必要があります。
- VPCエンドポイントを使用する場合は、S3エンドポイントがクライアントマシンからアクセス可能であることを確認してください。
- プロキシおよびファイアウォールルールは、
*.s3.amazonaws.comまたはワークスペースの特定の S3 バケットエンドポイントへの HTTPS トラフィックを許可する必要があります。
ダウンロード速度が遅い原因を診断する
Cloud Fetch のダウンロード速度のメトリクスを確認するには、 LogLevel 4 (情報) に設定し、 LogPathログ フォルダーのフル パスに設定します。 ドライバはチャンクごとにダウンロード速度をログに記録するため、結果セットが大きい場合は複数のログ行が生成されます。ドライバーは、速度が約1MB/秒を下回った場合にも警告をログに記録します。この機能は、2025年12月以降にリリースされたJDBC(Simba)ドライバのバージョンで利用可能です。
ダウンロードが遅い場合や停止した場合、ドライバーがすべての結果ファイルのダウンロードを完了する前に、署名付きURLの有効期限が切れる可能性があります。クライアントとAmazon S3間の帯域幅制限やネットワーク輻輳がないか確認してください。
S3 バケットのバージョン管理に関する考慮事項
Cloud Fetch は、一時的な結果セットをワークスペースのクラウド ストレージに書き込みます。 S3バケットのバージョン管理を有効にすると、Databricksは24時間の保持期間経過後、これらのファイルの古いバージョンを自動的に削除(ガベージコレクション)できなくなります。これは、最新ではないファイルバージョンが蓄積されるにつれて、ストレージ容量が指数関数的に増加する原因となる可能性があります。
Databricks では、1 日間の S3 ライフサイクル ポリシーを構成して、最新ではないバージョンを自動的に消去することを推奨しています。
ライフサイクル ポリシーを設定するには:
- AWSコンソールで、 S3 サービスに移動します。
- ワークスペースのルートストレージに使用する S3 バケット をクリックします。
- [管理] タブを開き、 [ライフサイクル ルールの作成] をクリックします。
- ライフサイクル ルール 名を入力します。
- プレフィックスフィールドは空のままにしておきます。
- 「 ライフサイクルルールのアクション 」で「 オブジェクトの最新ではないバージョンを完全に削除する 」を選択します。
- オブジェクトが非最新になってからの日数 に値を設定します。Databricks では 1 日の使用を推奨しています。
- 「 ルールを作成する 」をクリックします。
ログ記録を有効にする
JDBC ドライバーでのログ記録を有効にするには、 LogLevelプロパティを1 (重大なイベントのみ) から6 (すべてのドライバー アクティビティ) までの値に設定します。LogPathプロパティを、ログ ファイルを保存するフォルダーの完全パスに設定します。
詳細については、 Databricks JDBCドライバー ガイドの「ログ記録の構成」を参照してください。