Databricksノートブックの既知の制限事項

この記事では、Databricks ノートブックの既知の制限について説明します。 追加のリソース制限については、 「リソース制限」を参照してください。

ノートブックのサイズ

  • 個々のノートブック セルの入力制限は 6 MB です。

  • リビジョン スナップショットの自動保存、インポート、エクスポート、およびクローン作成のためのノートブックの最大サイズは 10 MB です。

  • 最大 32 MB のノートブックを手動で保存できます。

ノートブックの結果表

  • テーブルの結果は、10K 行または 2 MB のいずれか小さい方に制限されます。

  • ジョブ クラスターの最大ノートブック出力サイズは 30 MB です。

  • 表形式以外のコマンドの結果には 20 MB の制限があります。

  • デフォルトでは、テキスト結果は最大 50,000 文字を返します。 Databricks Runtime 12.2 LTS 以降では、Spark 構成プロパティspark.databricks.driver.maxReplOutputLengthを設定することでこの制限を増やすことができます。

ノートブックデバッガー

ノートブックデバッガーの制限:

  • デバッガーは Python でのみ動作します。 Scala や R はサポートされていません。

  • デバッガーは共有アクセス モードのクラスターでは動作しません。

  • デバッガは、外部ファイルまたはモジュールへのステップインをサポートしていません。

  • デバッグ セッションがアクティブな場合、ノートブックで他のコマンドを実行することはできません。

SQLウェアハウス ノートブック

SQLウェアハウス ノートブックの制限事項:

  • SQLウェアハウスにアタッチされている場合、実行コンテキストのアイドルタイムアウトは8時間です。

ipywidgets

ipywidgetsの制限:

  • ipywidgets を使用するノートブックは、稼働中のクラスターに接続する必要があります。

  • ウィジェットの状態はノートブックセッション間で保持されません。 ノートブックをクラスターに接続するたびに、ウィジェット セルを再実行してレンダリングする必要があります。

  • パスワードとコントローラーの ipywidget はサポートされていません。

  • LaTeX 式を含む HTMLMath ウィジェットと Label ウィジェットが正しくレンダリングされません。 (たとえば、 widgets.Label(value=r'$$\frac{x+1}{x-1}$$') は正しくレンダリングされません。

  • ノートブックがダーク モードの場合、ウィジェット、特に色付きのウィジェットが正しくレンダリングされない可能性があります。

  • ウィジェット出力は、ノートブックのダッシュボード ビューでは使用できません。

  • ipywidget の最大メッセージペイロードサイズは 5 MB です。 画像や大きなテキストデータを使用するウィジェットは、正しくレンダリングされない場合があります。

Databricksウィジェット

Databricks ウィジェットの制限:

  • ノートブックには最大 512 個のウィジェットを作成できます。

  • ウィジェット名は 1024 文字に制限されています。

  • ウィジェットのラベルは 2048 文字に制限されています。

  • テキストウィジェットには最大2048文字を入力できます。

  • 複数選択、コンボ ボックス、またはドロップダウン ウィジェットには、最大 1024 個の選択肢を設定できます。

  • コード内のウィジェットをクリアまたは削除した後でも、 [すべて実行]を押した後にウィジェットの状態が適切にクリアされない可能性があるという既知の問題があります。 この場合、ウィジェットの表示状態と印刷状態の間に不一致が見られます。 セルを個別に再実行すると、この問題を回避できる場合があります。 この問題を完全に回避するには、Databricks ではipywidgetsの使用を推奨しています。

  • ウィジェットの状態は非同期コードの実行中に変化する可能性があるため、スレッド、サブプロセス、構造化ストリーミング ( foreachBatch ) などの非同期コンテキストではウィジェットの状態に直接アクセスしないでください。 非同期コンテキストでウィジェットの状態にアクセスする必要がある場合は、引数として渡します。 たとえば、スレッドを使用する次のコードがあるとします。

    import threading
    
    def thread_func():
      # Unsafe access in a thread
      value = dbutils.widgets.get('my_widget')
      print(value)
    
    thread = threading.Thread(target=thread_func)
    thread.start()
    thread.join()
    

    Databricks では、代わりに引数を使用することをお勧めします。

    # Access widget values outside the asynchronous context and pass them to the function
    value = dbutils.widgets.get('my_widget')
    
    def thread_func(val):
      # Use the passed value safely inside the thread
      print(val)
    
    thread = threading.Thread(target=thread_func, args=(value,))
    thread.start()
    thread.join()
    
  • 通常、ウィジェットはノートブック内の異なる言語間で引数を渡すことはできません。 Python セルにウィジェットarg1を作成し、一度に 1 つのセルを実行する場合は、それを SQL または Scala セルで使用できます。 ただし、 All を実行または 小説 を ジョブ として実行 する場合は、これは機能しません。 いくつかの回避策は次のとおりです。

    • 言語が混在しないノートブックの場合は、言語ごとにノートブックを作成し、ノートブックを実行するときに引数を渡すことができます。

    • spark.sql()コールを使用することで、ウィジェットにアクセスできます。Pythonの例:spark.sql("select getArgument('arg1')").take(1)[0][0].

bamboolib

bamboolibの制限:

  • データ ラングリングに bamboolib を使用することは、約 1,000 万行に制限されています。 この制限は、pandas とクラスターのコンピュートリソースに基づいています。

  • データの視覚化に bamboolib を使用すると、約 10,000 行に制限されます。 この制限はplotlyに基づいています。