Databricks JDBC ドライバーのドライバー機能設定

この記事では、 Databricks JDBC ドライバーの特別なドライバー機能と高度なドライバー機能の設定を構成する方法について説明します。

Databricks JDBC ドライバーは、次の特別な高度なドライバー機能設定を提供します。

JDBCでのANSI SQL-92クエリーのサポート

レガシーSpark JDBCドライバーは、ANSI SQL-92言語のSQLクエリーを許可しており、クエリーをサーバーに送信する前にDatabricks SQL言語に変換します。ただし、アプリケーションがDatabricks SQLを直接生成する場合、またはアプリケーションがDatabricksに固有の非ANSI SQL-92標準SQL構文を使用する場合、Databricksでは接続構成としてUseNativeQuery=1を設定することをお勧めしています。この設定を使用すると、ドライバーはSQLクエリーをそのままDatabricksに渡します。

デフォルトのカタログとスキーマ

デフォルトのカタログとスキーマを指定するには、JDBC接続URLにConnCatalog=<catalog-name>;ConnSchema=<schema-name>を追加します。

JDBCで大規模なクエリー結果を抽出する

大規模なクエリー結果を抽出するときに最高のパフォーマンスを実現するには、以下の最適化が含まれている最新バージョンのJDBCドライバーを使用してください。

JDBCでのArrowシリアライズ

JDBC ドライバー バージョン 2.6.16 以降では、 Apache Arrow を使用する最適化されたクエリ結果シリアル化形式がサポートされています。

JDBCでのCloud Fetch

JDBCドライバーバージョン2.6.19以降は、Databricksデプロイメントでセットアップされたクラウドストレージを通じてクエリー結果を取得する機能であるCloud Fetchがサポートされています。

クエリー結果は、Arrowでシリアライズされた最大20 MBのファイルとして内部のDBFSストレージにアップロードされます。クエリー完了後にドライバーがフェッチ要求を送信すると、Databricksはアップロードされたファイルへの署名付きURL を生成して返します。JDBCドライバーは、そのURLを使用して、結果をDBFSから直接ダウンロードします。

Cloud Fetchは、1 MBを超えるクエリー結果にのみ使用されます。結果が小さい場合、Databricksから直接取得されます。

Databricksは、24時間後に削除対象としてマークされた蓄積ファイルを自動的にガベージコレクションします。これらのマークが付いたファイルは、さらに24時間後に完全に削除されます。

クラウド Fetch は、E2 ワークスペースでのみ使用できます。 また、対応する Amazon S3 バケットでバージョニングを有効にしないでください。 バージョニングを有効にしている場合でも、「 詳細設定」の手順に従ってクラウド Fetch を有効にすることができます。

Cloud Fetchアーキテクチャの詳細については、「BIツールで広帯域幅接続を実現した方法」をご覧ください。

高度な構成

DBFSルート S3 バケットのバージョン管理 を有効にしている場合、Databricks はアップロードされたクエリ結果の古いバージョンのガベージ コレクションを実行できません。アップロードされたクエリ結果の古いバージョンをパージする S3 ライフサイクルポリシーを最初に設定することをお勧めします。

ライフサイクルポリシーを設定するには、以下の手順を実行します。

  1. AWSコンソールで、S3サービスに移動します。

  2. ワークスペースのルートストレージとして使用するS3バケットをクリックします。

  3. 管理」タブを開き、「ライフサイクルルールを作成する」を選択します。

  4. ライフサイクルルール名として任意の名前を選択します。

  5. プレフィックスフィールドは空のままにしておきます。

  6. ライフサイクルルールのアクション」で「オブジェクトの最新ではないバージョンを完全に削除する」を選択します。

  7. オブジェクトが最新バージョンでなくなってからの日数」で値を設定します。ここでは値1を使用することをお勧めします。

  8. ルールを作成する」をクリックします。

ライフサイクルポリシー

ログ記録を有効にする

JDBC ドライバーでのログ記録を有効にするには、重要なイベントのみをログに記録するように1から6までのすべてのドライバー アクティビティをログに記録するようにLogLevelプロパティを設定します。 LogPath プロパティを、ログ ファイルを保存するフォルダーへの完全なパスに設定します。

詳細については、 Databricks JDBC Driver Guide』Configuring Logging セクションを参照してください。