次の方法で共有


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

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

ノートブックのサイズ設定

  • 個々のノートブック セルの入力制限は 6 MB です。
  • リビジョン スナップショットの自動保存、インポート、エクスポート、複製の最大ノートブック サイズは 10 MB です。
  • 32 MB までのノートブックは手動で保存できます。

ノートブックのセルの出力

  • テーブルの結果は、10 K 行または 2 MB のいずれか小さい方に制限されます。
  • ジョブ クラスターのノートブック出力の最大サイズは 30 MB です。
  • Databricks Runtime 17.0 以降:
    • セルの最大出力サイズは既定で 10 MB です。
    • この制限は、次のセルマジックを使用して、Python セルで 1 MB から 20 MB (両端を含む) の任意の値にカスタマイズできます: %set_cell_max_output_size_in_mb <size_in_MB>。 この制限は、ノートブック内のすべてのセルに適用されます。
    • セルの出力が構成されたサイズ制限を超えると、制限内に収まるように出力が切り捨てられます。 切り捨ては、できるだけ有用な出力を保持する方法で適用されます。
  • Databricks Runtime 16.4 LTS 以降:
    • テキストの結果は、最大 50,000 文字を返します。
    • Databricks Runtime 12.2 以降では、Spark 構成プロパティを spark.databricks.driver.maxReplOutputLength設定することで、この制限を最大 20 MB まで増やすことができます。
    • セルの出力が構成されたサイズ制限を超えると、出力は 完全に破棄されます

ノートブック デバッガー

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

  • デバッガーは Python でのみ機能します。 Scala や R には対応していません。
  • デバッガーにアクセスするには、ノートブックが次のいずれかのコンピューティング リソースに接続されている必要があります。
  • デバッガーは、外部のファイルやモジュールへのステップ インには対応していません。
  • デバッグ セッションがアクティブな場合、ノートブック内で他のコマンドを実行できません。
  • デバッガーは、アクセス モードStandard に設定されているサーバーレス コンピューティングとクラスターに接続されている場合、サブプロセスでのデバッグをサポートしていません。

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

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

  • SQL ウェアハウスにアタッチすると、実行コンテキストのアイドル タイムアウトは 8 時間になります。

ipywidgets (インタラクティブウィジェット)

ipywidgets の制限事項:

  • ipywidgets を使用するノートブックは、実行中のクラスターにアタッチする必要があります。
  • ウィジェットの状態は、ノートブック セッション間では保持されません。 ウィジェット セルをレンダリングするには、ノートブックをクラスターにアタッチするたびに再実行する必要があります。
  • パスワードとコントローラーの ipywidget はサポートされていません。
  • LaTeX 式を含む HTMLMath と Label の各ウィジェットは正しくレンダリングされません。 (たとえば、widgets.Label(value=r'$$\frac{x+1}{x-1}$$') は正しくレンダリングされません。)
  • ノートブックがダーク モードの場合、ウィジェット、特に色付きウィジェットは正しくレンダリングされない場合があります。
  • ウィジェットの出力は、ノートブック ダッシュボード ビューでは使用できません。
  • ipywidgets の最大メッセージ ペイロード サイズは 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()
    
  • ウィジェットは、通常、ノートブック内の異なる言語間で引数を渡すことはできません。 一度に 1 つのセルを実行する場合は、Python セルでウィジェット arg1 を作成し、SQL または Scala セルで使用できます。 ただし、[すべて実行] を使用する場合、またはジョブとしてノートブックを実行する場合は機能しません。 回避策の一部を次に示します。

    • 言語が混在していないノートブックの場合は、言語ごとにノートブックを作成し、ノートブックの実行時に引数を渡すことができます。
    • ウィジェットにアクセスするには、spark.sql() 呼び出しを使用します。 たとえば、Python では次のようになります: spark.sql("select getArgument('arg1')").take(1)[0][0]