メインコンテンツまでスキップ

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

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

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

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

ノートブック結果テーブル

  • テーブルの結果は、10K 行または 2MB のいずれか小さい方に制限されます。
  • ジョブ クラスターの最大ノートブック出力サイズは 30 MB です。
  • 表形式以外のコマンドの結果には 20 MB の制限があります。
  • デフォルトでは、テキストの結果は最大 50,000 文字を返します。 Databricks Runtime 12.2 LTS 以降では、Spark 構成プロパティを spark.databricks.driver.maxReplOutputLength.

ノートブック デバッガー

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

  • デバッガは Python でのみ動作します。 Scala や R には対応していません。

  • デバッガーにアクセスするには、ノートブックが次のいずれかのコンピュート リソースに接続されている必要があります。

    • サーバーレスコンピュート
    • Databricks Runtime14.3LTS 以降で アクセス モード が Standard (以前の共有) に設定されたコンピュート
    • Databricks Runtime13.3LTS 以降で アクセス モード が 専用 (以前のシングル ユーザー) に設定されたコンピュート
    • Databricks Runtime13.3LTS 以降で アクセス モード が No Isolation Shared に設定されたコンピュート
  • デバッガーは、外部ファイルまたはモジュールへのステップインをサポートしていません。

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

  • デバッガは、 アクセスモード が Standard に設定された サーバレス コンピュート およびクラスターに接続されているサブプロセスでのデバッグをサポートしません。

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) などの非同期コンテキストでは、ウィジェットの状態に直接アクセスしないでください。これは、非同期コードの実行中にウィジェットの状態が変化する可能性があるためです。 非同期コンテキストでウィジェットの状態にアクセスする必要がある場合は、引数として渡します。たとえば、スレッドを使用する次のコードがあるとします。

    Python
    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 では、代わりに引数を使用することをお勧めします。

    Python
    # 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].