Databricks JDBC ドライバーのドライバー機能設定
この記事は、Databricks JDBC Simba ドライバーに適用されます。 Databricks が開発した JDBC ドライバーについては、「 Databricks JDBC ドライバー (OSS)」を参照してください。
この記事では、 Databricks JDBC ドライバーの特別なドライバー機能と高度なドライバー機能設定を構成する方法について説明します。
Databricks JDBC ドライバーには、次の特殊で高度なドライバー機能設定が用意されています。
- JDBC での ANSI SQL-92 クエリのサポート
- デフォルトのカタログとスキーマ
- JDBCで大きなクエリ結果を抽出する
- JDBC での矢印のシリアル化
- JDBC での Cloud Fetch
- 高度な設定
- ログ記録を有効にする
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 での矢印のシリアル化
JDBC ドライバー バージョン 2.6.16 以降では、 Apache Arrow を使用した最適化されたクエリ結果のシリアル化形式がサポートされています。
JDBC での Cloud Fetch
JDBCドライバーバージョン2.6.19以降は、Databricksデプロイメントでセットアップされたクラウドストレージを通じてクエリー結果を取得する機能であるCloud Fetchがサポートされています。
クエリ結果は、最大 20 MB の矢印シリアル化ファイルとして内部 DBFS ストレージの場所に アップロードされます。 クエリの完了後にドライバーがフェッチ要求を送信すると、Databricks はアップロードされたファイルに対して 署名付き URL を生成して返します。 その後、JDBC ドライバーは URL を使用して、DBFS から直接結果をダウンロードします。
Cloud Fetchは、1 MBを超えるクエリー結果にのみ使用されます。結果が小さい場合、Databricksから直接取得されます。
Databricksは、24時間後に削除対象としてマークされた蓄積ファイルを自動的にガベージコレクションします。これらのマークが付いたファイルは、さらに24時間後に完全に削除されます。
Cloud Fetch は E2 ワークスペースでのみ使用できます。 また、対応する Amazon S3 バケットでバージョニングが有効になっていない必要があります。 バージョニングを有効にしている場合でも、 詳細設定の手順に従って Cloud Fetch を有効にできます。
Cloud Fetchアーキテクチャの詳細については、「BIツールで広帯域幅接続を実現した方法」をご覧ください。
高度な構成
S3DBFSルート Databricksで バケット バージョニング を有効にしている場合、アップロードされたクエリ結果の古いバージョンをガベージコレクション できません。最初に、アップロードされたクエリ結果の古いバージョンをパージする S3 ライフサイクルポリシーを設定することをお勧めします。
ライフサイクルポリシーを設定するには、以下の手順を実行します。
- AWSコンソールで、 S3 サービスに移動します。
- ワークスペースのルートストレージに使用する S3 バケット をクリックします。
- 「 管理 」タブを開き、「 ライフサイクルルールを作成する 」を選択します。
- ライフサイクルルール名 として任意の名前を選択します。
- プレフィックスフィールドは空のままにしておきます。
- 「 ライフサイクルルールのアクション 」で「 オブジェクトの最新ではないバージョンを完全に削除する 」を選択します。
- 「 オブジェクトが最新バージョンでなくなってからの日数 」で値を設定します。ここでは値1を使用することをお勧めします。
- 「 ルールを作成する 」をクリックします。
ログ記録を有効にする
JDBC ドライバーでログ記録を有効にするには、 LogLevel
プロパティを 1
から 6
までの重大なイベントのみをログに記録するように設定して、すべてのドライバー アクティビティをログに記録します。 LogPath
プロパティを、ログ ファイルを保存するフォルダーへの完全なパスに設定します。
詳細については、『 Databricks JDBC Driver Guide』のConfiguring Logging
セクションを参照してください。