サーバーレス コンピューティングの制限事項

この記事では、ノートブックとジョブのサーバーレス コンピューティングの現在の制限事項について説明します。 最も重要な考慮事項の概要から始まり、制限事項の包括的なリファレンス リストを提供します。

言語と API のサポート

  • R はサポートされていません。
  • Spark Connect API のみがサポートされています。 Spark RDD API はサポートされていません。
  • Spark Connect は、サーバーレス コンピューティングで使用され、分析と名前解決を実行時間に延期します。これは、コードの動作を変更する可能性があります。 Spark Connect と Spark クラシックの比較を参照してください。
  • ANSIモードはデフォルトで有効です。 無効なキャスト、算術オーバーフロー、誤った入力は、 NULL や誤った結果を静かに返すのではなく、ランタイムエラーを引き起こします。 動作を変える操作の扱い方やオプトアウトの制限については、移行ガイドの SQL挙動の違いセクション をご覧ください。
  • デフォルトのセッションタイムゾーンは Etc/UTC (協調ユニバーサルタイム)です。 別のタイムゾーンを使う場合は、 spark.sql.session.timeZoneに設定してください。 サーバーレス ノートブックとジョブの Spark プロパティの構成を参照してください。
  • spark.createDataFrameを使用してローカル データから DataFrame を作成する場合、行サイズは 128 MB を超えることはできません。

データ アクセスとストレージ

  • Unity カタログを使用して外部データ ソースに接続する必要があります。 外部の場所を使用して、クラウド ストレージにアクセスします。
  • DBFS へのアクセスは制限されています。 代わりに、Unity カタログ ボリューム または ワークスペース ファイル を使用してください。
  • ノートブックやジョブタスクのワーキングディレクトリは保証されていないため、相対的なファイルパスや相対的なPythonインポートが失敗することがあります。 ファイルを参照するには絶対パスを使い、相対モジュールではなくワークスペースファイルとして共有Pythonコードをインポートしてください。 PythonとRモジュールの作業を参照してください。
  • Maven 座標はサポートされていません。
  • グローバル一時ビューはサポートされていません。 セッション間データの受け渡しが必要な場合、Databricks では セッション一時ビュー を使用するか、テーブルを作成することをお勧めします。

ユーザー定義関数 (UDF)

  • ユーザー定義関数 (UDF) はインターネットにアクセスできません。 このため、CREATE FUNCTION (External) コマンドはサポートされていません。 Databricks では、UDF の作成に CREATE FUNCTION (SQL および Python) を使用することをお勧めします。
  • UDF、 map、 mapPartitionsなどのユーザー定義のカスタム コードは、メモリ使用量が 1 GB を超えることはできません。
  • Scala UDF は 、上位の関数内では使用できません。

UI とログ記録

  • Spark UI は使用できません。 代わりに、クエリ プロファイルを使用して、Spark クエリに関する情報を表示します。 「クエリ プロファイル」を参照してください。
  • Spark ログは使用できません。 ユーザーは、クライアント側のアプリケーション ログにのみアクセスできます。

ネットワークとワークスペースへのアクセス

  • ワークスペース間アクセスは、ワークスペースが同じリージョンにあり、宛先ワークスペースに IP ACL またはフロントエンド PrivateLink が構成されていない場合にのみ許可されます。
  • Databricks Container Services はサポートされていません。
  • サーバーレスコンピュートはIPv6経由でしか到達できないリソースには接続できません。 リソースはIPv4経由でアクセス可能でなければなりません。

ストリーミングの制限事項

サーバーレス コンピューティングでは、次の 構造化ストリーミング トリガーがサポートされています。

  • Trigger.AvailableNow()。 Databricks では、サーバーレス コンピューティングに対してこのトリガー モードをお勧めします。
  • Trigger.Once()。 この非推奨モードはサポートされていますが、推奨されません。

サーバーレス コンピューティングでは、次のトリガーはサポートされていません。

  • Trigger.Continuous(interval)。
  • Trigger.ProcessingTime(interval)。
    • 既定では、トリガー モードを指定しない場合、Apache Spark によってトリガーが Trigger.ProcessingTime("0 seconds")に設定されます。 サーバーレス コンピューティングでサポートされるトリガーを設定する必要があります。

サポートされていないトリガーを使用しようとすると、クエリによってエラー INFINITE_STREAMING_TRIGGER_NOT_SUPPORTEDが発生します。

継続的なストリーミング ワークロードについては、サーバーレス環境のトリガー型と継続型パイプライン モードで継続モードを使用するか、またはTrigger.AvailableNow()で を使用してください。

ストリーミング ユース ケースを適切なサーバーレス製品にマップする決定ガイドについては、「 サーバーレス コンピューティングでのストリーミング」を参照してください。

標準アクセス モードでのストリーミングに関するすべての制限も適用されます。 「ストリーミングの制限事項」を参照してください。

ノートブックの制約事項

  • Scala と R はノートブックではサポートされていません。
  • JAR ライブラリはノートブックではサポートされていません。 対処方法については、「サーバーレス コンピューティングのベスト プラクティス」を参照してください。 ジョブ内の JAR タスクがサポートされています。 「ジョブの JAR タスク」を参照してください。
  • ノートブック範囲のライブラリは、開発セッション間ではキャッシュされません。
  • ユーザー間でノートブックを共有するときの TEMP テーブルとビューの共有はサポートされていません。
  • Notebooks 内の DataFrame のオートコンプリートと変数エクスプローラーはサポートされていません。
  • 既定では、新しいノートブックは .ipynb 形式で保存されます。 ノートブックがソース形式で保存されている場合、サーバーレス メタデータが正しくキャプチャされず、一部の機能が期待どおりに機能しない可能性があります。
  • ノートブック タグはサポートされていません。 サーバーレス使用ポリシーを使用して、サーバーレスの使用状況にタグを付けます。

ジョブの制限事項

  • タスク ログは、タスクの実行ごとに分離されません。 ログには、複数のタスクからの出力が含まれます。
  • タスク ライブラリは、ノートブック タスクではサポートされていません。 代わりにノートブック スコープのライブラリを使用してください。 「Notebook スコープのPython ライブラリ」を参照。
  • 既定では、サーバーレス ジョブにはクエリ実行タイムアウトはありません。 spark.databricks.execution.timeout プロパティを使用して、ジョブ クエリの実行タイムアウトを設定できます。 詳細については、「 サーバーレス ノートブックとジョブの Spark プロパティを構成する」を参照してください。
  • サーバーレス コンピューティングの最大実行時間は 7 日です。 7 日を超える実行はプラットフォームによって終了され、再試行されません。 ワークロードを 7 日より長く実行するには、それらを小さな実行に分割するか、クラシック コンピューティングを使用します。

コンピューティング固有の制限事項

次のコンピューティング固有の機能はサポートされていません。

キャッシュの制限事項

  • メタデータは、サーバーレス コンピューティング セッションにキャッシュされます。 このため、カタログを切り替えるときにセッション コンテキストが完全にリセットされないことがあります。 セッション コンテキストをクリアするには、サーバーレス コンピューティング リソースをリセットするか、新しいセッションを開始します。
  • データフレーム API と SQL キャッシュ API は、サーバーレス コンピューティングではサポートされていません。 これらの API または SQL コマンドのいずれかを使用すると、例外が発生します。
  • Spark MLモデルキャッシュはセッションあたり1GB(1073741824バイト)に制限され、1モデルは100MBに制限されています。 サーバーレス計算では両方の制限はクラシック計算よりも低く、どちらも変更できません。 セッション制限を超えると ML_CACHE_SIZE_OVERFLOW_EXCEPTIONが上がります。 モデルごとの上限を超えると MODEL_SIZE_OVERFLOW_EXCEPTIONが上がります。 キャッシュの空き容量を確保するには、もう使わないモデルのPython参照を削除してください。 15分間使われずに放置されたモデルはローカルディスクに移動し、セッション制限にカウントされます。

Hive の制限事項

  • Hive SerDe テーブル はサポートされていません。 また、Hive SerDe テーブルにデータを読み込む対応する LOAD DATA コマンドはサポートされていません。 このコマンドを使用すると、例外が発生します。

    データ ソースのサポートは、AVRO、BINARYFILE、CSV、DELTA、JSON、KAFKA、ORC、PARQUET、TEXT、XML に限定されます。

  • Hive 変数 (たとえば、${env:var}、${configName}、${system:var}、spark.sql.variable)、または ${var} 構文を使用した config 変数の参照はサポートされていません。 Hive 変数を使用すると、例外が発生します。

    代わりに、 DECLARE VARIABLE、 SET VARIABLE、 SQL セッション変数の参照 とパラメーター マーカー ('?'、または ':var') を使用して、セッションの状態を宣言、変更、および参照します。 IDENTIFIER 句 を使用して、多くの場合、オブジェクト名をパラメーター化することもできます。

サポートされるデータ ソース

サーバーレス コンピューティングでは、DML 操作 (書き込み、更新、削除) に対して次のデータ ソースがサポートされます。

  • CSV
  • JSON
  • AVRO
  • DELTA
  • KAFKA
  • PARQUET
  • ORC
  • TEXT
  • UNITY_CATALOG
  • BINARYFILE
  • XML
  • SIMPLESCAN
  • ICEBERG

サーバーレス コンピューティングでは、読み取り操作用に次のデータ ソースがサポートされています。

  • CSV
  • JSON
  • AVRO
  • DELTA
  • KAFKA
  • PARQUET
  • ORC
  • TEXT
  • UNITY_CATALOG
  • BINARYFILE
  • XML
  • SIMPLESCAN
  • ICEBERG
  • MYSQL
  • POSTGRESQL
  • SQLSERVER
  • REDSHIFT
  • SNOWFLAKE
  • SQLDW(Azure Synapse)
  • DATABRICKS
  • BIGQUERY
  • ORACLE
  • SALESFORCE
  • SALESFORCE_DATA_CLOUD
  • TERADATA
  • WORKDAY_RAAS
  • MONGODB