共用方式為


Databricks 筆記本的已知限制

本文涵蓋 Databricks 筆記本的已知限制。 如需其他資源限制,請參閱 資源限制

筆記本的尺寸

  • 所有 100 MB 以下的筆記本都支援修訂快照自動儲存、手動儲存和複製。
  • IPYNB 筆記本支援最大 100 MB 的匯入和匯出。
  • 支援 DBC 封存、HTML、R Markdown,及最大 10 MB 的原始筆記本的匯入和匯出。
  • 個別筆記本儲存格的輸入限制為 6 MB。

筆記本儲存格輸出

  • 表格結果限制為 10,000 列或 2 MB,以較低者為準。
  • 作業叢集的筆記本輸出大小上限為 30 MB。
  • 在 Databricks Runtime 17.0 和更新版本中,以及無伺服器環境 3:
    • 單元格輸出大小上限預設為10 MB。
    • 您可以在 Python 單元格中使用以下 cell magic,將此限制自定義為包括 1 MB 到 20 MB 在內的任何值: %set_cell_max_output_size_in_mb <size_in_MB>。 此限制接著會套用至筆記本中的所有儲存格。
    • 當儲存格輸出超過設定的大小限制時,輸出會截斷以符合限制。 截斷的方式是為了盡可能保留有用的輸出結果。
  • 在 Databricks Runtime 16.4 LTS 及以前的版本,以及無伺服器環境 2 及以前的版本中:
    • 文字結果最多會傳回 50,000 個字元。
    • 在 Databricks Runtime 12.2 和更新版本中,您可以藉由設定 Spark 組態屬性 spark.databricks.driver.maxReplOutputLength,將此限制增加至 20 MB。
    • 當儲存格輸出超過設定的大小限制時,輸出將會被完全捨棄

筆記本調試程式

筆記本調試程式的限制:

  • 調試程式只適用於 Python。 它不支援 Scala 或 R。
  • 若要存取除錯程式,您的筆記本必須連線到下列其中一個計算資源:
    • 無伺服器計算
    • 在Databricks Runtime 14.3 LTS及以上版本中,將存取模式設定為Standard(先前稱為共享)進行計算。
    • 在 Databricks Runtime 13.3 LTS 及更新版本中,使用 存取模式的計算 設定為 Dedicated(先前為單一使用者)
    • 在 Databricks Runtime 13.3 LTS 和更高版本中使用 存取模式,將 設定為 無隔離共用
  • 除錯器不支援進入 Python 程式庫進行單步執行。
  • 當偵錯會話處於作用中狀態時,您無法在筆記本中執行其他命令。
  • 當連線到 無伺服器計算 和叢集且 存取模式 設定為 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),因為小工具狀態在執行異步程式代碼時可能會變更。 如果您需要存取異步內容中的小工具狀態,請以自變數的形式傳入。 例如,如果您有下列使用線程的程序代碼:

    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 ,並在 SQL 或 Scala 數據格中使用它。 不過,如果您使用 [全部 執行] 或執行筆記本做為作業,則無法運作。 某些因應措施包括:

    • 對於不混合語言的筆記本,您可以為每個語言建立筆記本,並在執行 筆記本時傳遞自變數。
    • 您可以使用呼叫來存取小工具 spark.sql() 。 例如,在 Python 中: spark.sql("select getArgument('arg1')").take(1)[0][0]