Compartilhar via


Limitações conhecidas dos notebooks do Databricks

Este artigo aborda as limitações conhecidas dos notebooks do Databricks. Para obter limites dos recursos adicionais, consulte Limites de recursos.

Dimensionamento do bloco de anotações

  • As células individuais do notebook possuem um limite de entrada de 6 MB.
  • O tamanho máximo do notebook para salvamento automático, importação, exportação e clonagem dos instantâneos de revisão é de 10 MB.
  • Você pode salvar manualmente os notebooks de até 32 MB.

Tabela de resultados do bloco de anotações

  • Os resultados da tabela são limitados a 10 mil linhas ou 2 MB, o que for menor.
  • Os clusters de tarefas têm um tamanho máximo de saída do notebook de 30 MB.
  • Os resultados dos comandos não tabulares têm um limite de 20 MB.
  • Por padrão, os resultados do texto retornam no máximo de 50.000 caracteres. Com o Databricks Runtime 12.2 LTS e superior, você pode aumentar esse limite definindo a propriedade spark.databricks.driver.maxReplOutputLength de configuração do Spark.

Depurador do bloco de anotações

Limitações do depurador do notebook:

  • O depurador funciona apenas com Python. Ele não dá suporte a Scala ou R.
  • O depurador não funciona em clusters no modo de acesso Compartilhado.
  • O depurador não dá suporte à entrada em arquivos ou módulos externos.
  • Você não pode executar outros comandos no notebook quando uma sessão de depuração estiver ativa.

Notebooks do SQL Warehouse

Limitações dos Notebooks do SQL Warehouses:

  • Quando anexados a um SQL warehouse, os contextos de execução têm um tempo limite ocioso de 8 horas.

ipywidgets

Limitações do ipywidgets:

  • Um notebook que usa ipywidgets precisa ser anexado a um cluster em execução.
  • Os estados do Widget não são preservados entre as sessões do notebook. Você precisará executar novamente as células do widget para renderizá-las sempre que anexar o notebook a um cluster.
  • Não há suporte para ipywidgets de senha e controlador.
  • Os widgets HTMLMath e Label com expressões LaTeX não são renderizados corretamente. (Por exemplo, widgets.Label(value=r'$$\frac{x+1}{x-1}$$') não é renderizado corretamente.)
  • É possível que os widgets não sejam renderizados corretamente se o notebook estiver no modo escuro, especialmente os widgets coloridos.
  • As saídas de widget não podem ser usadas nas exibição de painel do notebook.
  • O tamanho máximo do conteúdo da mensagem de um ipywidget é de 5 MB. Widgets que usam imagens ou dados de texto grandes podem não ser renderizados corretamente.

Widgets do Databricks

Limitações dos Widgets do Databricks:

  • Um máximo de 512 widgets pode ser criado em um notebook.

  • O nome do widget está limitado a 1024 caracteres.

  • Um rótulo do widget está limitado a 2048 caracteres.

  • Um máximo de 2048 caracteres pode ser inserido em um widget de texto.

  • Pode haver um máximo de 1024 opções para um widget de seleção múltipla, caixa de combinação ou menu suspenso.

  • Há um problema conhecido em que é possível que o estado de um widget não seja limpo corretamente após clicar em Executar Todos, mesmo depois de limpar ou remover o widget no código. Se isso acontecer, você verá uma discrepância entre o estado visual e impresso do widget. Executar novamente as células individualmente pode ignorar esse problema. Para evitar esse problema completamente, o Databricks recomenda usar ipywidgets.

  • Você não deve acessar o estado do widget diretamente em contextos assíncronos, como threads, subprocessos ou Fluxo Estruturado (foreachBatch), pois o estado do widget pode ser alterado enquanto o código assíncrono está em execução. Se você precisar acessar o estado do widget em um contexto assíncrono, passe-o como um argumento. Por exemplo, se você tiver o seguinte código que usa threads:

    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()
    

    Em vez disso, o Databricks recomenda usar um argumento:

    # 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()
    
  • Geralmente, os widgets não podem passar argumentos entre diferentes linguagens em um notebook. É possível criar um widget arg1 em uma célula do Python e usá-lo em uma célula do SQL ou Scala se você executar uma célula de cada vez. No entanto, isso não funcionará se você usar Executar todos ou executar o notebook como trabalho. Algumas soluções alternativas são:

    • Para notebooks que não combinam idiomas, você pode criar um notebook para cada idioma e passar os argumentos ao executar o notebook.
    • Você pode acessar o widget usando uma chamada spark.sql(). Por exemplo, em Python: spark.sql("select getArgument('arg1')").take(1)[0][0].