Campaign: Databricksのクエリが断続的に非常に低速になる
この記事では、Databricks FDAを使用して長いワークフロークエリのタイムアウトを軽減する方法について説明します。
説明 description
お客様は、ワークフロークエリにDatabricks FDAを使用しており、そのクエリは断続的に非常に遅く、1時間のタイムアウト制限(1時間後のOAuth トークンの有効期限の結果)により失敗します。 ワークフローのログにメッセージが表示されました:
ODB-240000 ODBC エラー:[ Simba] [ Hardy] (115)接続が失敗しました。エラー:許可されていない/禁止されたエラー応答が返されましたが、トークンの有効期限が切れたメッセージが受信されませんでした。SQLState: 08S01
and
ODB-240000 ODBC エラー:認証トークンの有効期限が切れています。 ユーザーは再認証する必要があります。 SQLState: 08001
解決策 resolution
有効期限そのものは、Campaign ワークフロー設定やserverConf.xml設定ファイルでは制御されません。 この設定では、ACCはNmsaccountNameでOAuthを使用してSimba ODBC ドライバーを介してDatabricksに接続します。 長期間有効な資格情報/アプリ秘密鍵は2031年まで有効ですが、ODBC接続用に発行されたアクセストークンの有効期間は、通常60分と、はるかに短くなる可能性があります。
緩和オプション:
- Databricks管理者は、Adobe Campaignで使用されるOAuth アプリ/統合を確認し、access_token_ttl_in_minutesなどのDatabricks OAuth トークンアクセスポリシーを更新するなど、アクセストークン TTLを増やすことができます。 これは、お客様/Databricks管理者が行う必要があり、長期間有効なアクセストークンは漏洩した場合の露出を増加させるため、セキュリティポリシーに従う必要があります。
- トークンポリシーを変更した後、Databricks側で伝搬時間を確保し、新しいACC/ODBC接続で再テストします。 既存のオープン接続では、ポリシーの変更前に発行された以前のトークンを引き続き使用できます。
- ACC ワークフロークエリを分割または最適化して、個々のDBX SQL ステートメントがトークンのライフタイムを大幅に下回るように動作します。 これは、障害ウィンドウのみを拡張するのではなく、断続的に低速/キューに入れられたDBX実行にも対処するため、より安全で好ましい緩和策です。
- Databricks側では、SQL warehouseのクエリ履歴で低速な実行を確認し、クエリの実行時間、同時実行、スケーリング/最大クラスター、コールドスタート、クエリ計画、テーブル統計/レイアウト、および述語/結合のデータ量をキューに入れる時間を調整します。
- お客様がOAuth アクセストークンの有効期間よりも長く正当に実行できるDBX SQL ステートメントを必要とする場合は、ODBC ドライバーで使用されるOAuth モードが、設定で長時間実行/オープン ステートメントのトークン更新をサポートしているかどうかをDatabricks/Simbaで確認する必要があります。 そうでない場合は、トークン TTLを増やすか、サポートされている別の認証モードを使用する必要があります。
したがって、現実的な短期的な緩和策は、ACC統合用のDatabricks OAuth アクセストークン TTLを増やすことであり、長期的な修正は、ワークフローが非常に長時間実行するSQL呼び出しを生き残るトークンに依存しないように、DBX クエリのランタイム/キューを減らすことです。