サーバレスコンピュートの制限
この記事では、ノートブックとジョブに対するサーバレス コンピュートの現在の制限について説明します。 まず、最も重要な考慮事項の概要を説明し、次に制限事項の包括的な参照リストを提供します。
言語とAPIのサポート
- Rはサポートされていません。
- Spark Connect APIのみがサポートされます。 Spark RDD APIはサポートされていません。
- サーバレス コンピュートで使用されるSpark Connect は、分析と名前解決を実行時まで延期するため、コードの動作が変わる可能性があります。 「Spark Connect と Spark Classic の比較」を参照してください。
- ANSI モードはdefaultで有効になっています。不正なキャスト、算術オーバーフロー、および不正な形式の入力は、
NULLや不正な結果をサイレントに返すのではなく、ランタイムエラーを発生させます。動作を変更する操作の処理方法およびオプトアウトの制限に関する情報については、移行ガイドのSQL動作の違いに関するセクションを参照してください。 - defaultのセッションタイムゾーンは
Etc/UTC(協定世界時) です。別のタイムゾーンを使用するには、spark.sql.session.timeZoneを設定します。「Serverless ノートブックとジョブのSparkプロパティを構成する」を参照してください。 spark.createDataFrameを使用してローカルデータからDataFrameを作成する場合、行サイズは128MBを超えることはできません。
データアクセスと保存
-
外部データソースに接続するには、 Unity Catalog を使用する必要があります。 外部ロケーションを使用してクラウドストレージにアクセスします。
-
DBFS へのアクセスは制限されています。代わりに、 Unity Catalogボリュームまたはワークスペース ファイルを使用してください。
-
ノートブックとジョブタスクの作業ディレクトリは保証されないため、相対ファイルパスや相対的なPythonインポートが失敗する可能性があります。ファイルを参照するには絶対パスを使用し、相対モジュールの代わりに共有Pythonコードをワークスペースファイルとしてインポートしてください。See Work with Python and R modules.
-
Maven 座標はサポートされていません。
-
グローバル一時ビューはサポートされていません。セッション間のデータの受け渡しが必要な場合、Databricks ではセッション一時ビューを使用するか、テーブルを作成することをお勧めします。
-
サーバレス コンピュートは、Google マネージド サービスへのPrivate Service Connect接続をサポートしていません。 Private Service Connect でGoogle Cloud StorageとBigQueryにアクセスするには、クラシック コンピュートを使用します。
ユーザー定義関数(UDF)
- ユーザー定義関数 (UDF) はインターネットにアクセスできません。 このため、 CREATE FUNCTION (外部) コマンドはサポートされていません。 Databricks では、 CREATE FUNCTION (SQL と Python) を使用して UDF を作成することをお勧めします。
- UDF、
map、mapPartitionsなどのユーザー定義のカスタム コードは、メモリ使用量が 1 GB を超えることはできません。 - Scala UDF は高階関数内では使用できません。
UIとログ
- Spark UI は使用できません。 代わりに、クエリ プロファイルを使用して、Spark クエリに関する情報を表示します。 クエリ プロファイルを参照してください。
- Spark ログは使用できません。ユーザーはクライアント側のアプリケーション ログにのみアクセスできます。
ネットワークとワークスペースへのアクセス
- クロスワークスペース アクセスは、ワークスペースが同じリージョンにあり、宛先ワークスペースに IP ACL またはフロントエンドの PrivateLink が構成されていない場合にのみ許可されます。
- Databricks Container Services はサポートされていません。
- Serverless コンピュートは、IPv4 経由でのみアクセス可能なリソースに接続できません。リソースは IPv4 経由でアクセス可能である必要があります。
ストリーミングの制限
サーバレス コンピュートは、次の構造化ストリーミング トリガーをサポートします。
Trigger.AvailableNow()。 Databricks 、サーバレス コンピュートにこのトリガー モードを推奨します。Trigger.Once()この非推奨モードはサポートされていますが、推奨されません。
以下のトリガーはサーバレスコンピュートではサポートされていません。
Trigger.Continuous(interval).Trigger.ProcessingTime(interval).- デフォルトでは、トリガーモードを指定しない場合、Apache Spark はトリガーを
Trigger.ProcessingTime("0 seconds")に設定します。サポートされているトリガーをサーバレスコンピュートに設定する必要があります。
- デフォルトでは、トリガーモードを指定しない場合、Apache Spark はトリガーを
サポートされていないトリガーを使用しようとすると、クエリはエラーINFINITE_STREAMING_TRIGGER_NOT_SUPPORTEDを発生させます。
継続的なストリーミング ワークロードの場合は、トリガー モードと連続パイプライン モードをサーバレスの連続モードで使用するか、実行ジョブでTrigger.AvailableNow()継続的に使用します。
ストリーミングのユースケースを適切なサーバレス製品にマッピングする決定ガイドについては、サーバレス コンピュートでのストリーミングを参照してください。
標準アクセスモードでのストリーミングに関するすべての制限も適用されます。ストリーミングの制限を参照してください。
ノートブックの制限
- Scala と R はノートブックではサポートされていません。
- JAR ライブラリはノートブックではサポートされていません。回避策については、 「サーバレス コンピュートのベスト プラクティス」を参照してください。 ジョブ内の JAR タスクがサポートされています。ジョブについては JAR タスクを参照してください。
- ノートブック スコープのライブラリは、開発セッション間でキャッシュされません。
- ユーザー間でノートブックを共有する場合の TEMP テーブルとビューの共有はサポートされていません。
- ノートブック内のデータフレームのオートコンプリートと変数エクスプローラーはサポートされていません。
- デフォルトでは、新しいノートブックは
.ipynb形式で保存されます。ノートブックがソース 形式で保存されている場合、サーバレス メタデータが正しく取得されず、一部のフィーチャが期待どおりに機能しないことがあります。 - ノートブックのタグはサポートされていません。サーバレス利用ポリシーをタグ付けするには、サーバレス利用ポリシーを使用します。
ジョブの制限
- タスク ログは、タスクの実行ごとに分離されません。 ログには、複数のタスクからの出力が含まれます。
- タスク ライブラリは、ノートブック タスクではサポートされていません。 代わりに、ノートブック スコープのライブラリを使用してください。 ノートブック スコープの Python ライブラリを参照してください。
- デフォルトでは、サーバレス ジョブにはクエリ実行タイムアウトはありません。
spark.databricks.execution.timeoutプロパティを使用して、ジョブ クエリの実行タイムアウトを設定できます。詳細については、 「サーバーレス ノートブックとジョブのSparkプロパティを構成する」を参照してください。 - サーバレスコンピュートの最大ランタイムは7日間です。7日を超える実行はプラットフォームによって終了され、再試行されません。7日を超えるワークロードを実行するには、それらをより小さな実行に分割するか、クラシックコンピュートを使用します。
コンピュート固有の制限
次のコンピュート固有の機能はサポートされていません。
- コンピュートポリシー
- コンピュートスコープの init スクリプト。パッケージをインストールしたり Python 環境を構成したりするには、代わりにベース環境またはノートブックの依存関係を使用します。「Serverless 環境の構成」を参照してください。
- カスタムデータソースと Spark 拡張機能を含むコンピュートスコープのライブラリ。 代わりに、ノートブック スコープのライブラリ を使用してください。
- インスタンスプール
- コンピュート イベント ログ
- ほとんどの Apache Spark コンピュート構成。 サポートされている設定のリストについては、 サーバレス ノートブックとジョブの Spark プロパティの設定を参照してください。
- コンピュートスコープの環境変数。Serverless Lakeflow Jobs タスクでアプリケーションコードに環境変数を渡すには、ジョブレベルの環境変数機能(ベータ版)を使用します。「Serverlessジョブの環境変数を構成する」を参照してください。ウィジェットを使用してジョブとタスクのパラメーターを作成することもできます。
キャッシングの制限
-
メタデータはサーバレス コンピュート セッションにキャッシュされます。 このため、カタログを切り替えてもセッション コンテキストが完全にリセットされない可能性があります。セッション コンテキストをクリアするには、サーバレス コンピュート リソースをリセットするか、新しいセッションを開始します。
-
データフレームおよびSQLキャッシュAPIs 、サーバレス コンピュートではサポートされていません。 これらのAPIsまたはSQLコマンドを使用すると、例外が発生します。
-
Spark 機械学習モデルのキャッシュはセッションあたり 1 GB(1,073,741,824 バイト)に制限されており、単一モデルは 100 MB に制限されています。どちらの制限も、クラシックコンピュートよりもServerlessコンピュートの方が低く設定されており、変更することはできません。セッションの制限を超過すると、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}構文を使用した設定変数の参照はサポートされていません。 Hive 変数を使用すると、例外が発生します。代わりに、DECLARE VARIABLE、 SET VARIABLE、および SQL セッション変数参照とパラメーター マーカー ('?' または '') セッション状態を宣言、変更、参照します。多くの場合、 IDENTIFIER 句 を使用してオブジェクト名をパラメータ化することもできます。
サポートされているデータソース
サーバレス コンピュートは、DML 操作 (書き込み、更新、削除) で次のデータソースをサポートしています。
CSVJSONAVRODELTAKAFKAPARQUETORCTEXTUNITY_CATALOGBINARYFILEXMLSIMPLESCANICEBERG
サーバレス コンピュートは、読み込み操作で次のデータソースをサポートしています。
CSVJSONAVRODELTAKAFKAPARQUETORCTEXTUNITY_CATALOGBINARYFILEXMLSIMPLESCANICEBERGMYSQLPOSTGRESQLSQLSERVERREDSHIFTSNOWFLAKESQLDW(Azure Synapse)DATABRICKSBIGQUERYORACLESALESFORCESALESFORCE_DATA_CLOUDTERADATAWORKDAY_RAASMONGODB