Partilhar via


Limitações conhecidas Notebooks Databricks

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

Dimensionamento de notebook

  • As células individuais do bloco de notas têm um limite de entrada de 6 MB.
  • O tamanho máximo do bloco de anotações para salvar automaticamente, importar, exportar e clonar instantâneos de revisão é de 10 MB.
  • Pode guardar manualmente blocos de notas até 32 MB.

Saídas de células do bloco de notas

  • Os resultados da tabela são limitados a 10 K linhas ou 2 MB, o que for menor.
  • Os clusters de tarefas têm um tamanho máximo de saída de bloco de notas de 30 MB.
  • No Databricks Runtime 17.0 e versões superiores:
    • O tamanho máximo de saída da célula tem como padrão 10 MB.
    • Este limite pode ser personalizado em células Python para qualquer valor entre 1 MB e 20 MB (inclusive) usando a seguinte magia de célula: %set_cell_max_output_size_in_mb <size_in_MB>. Este limite aplicar-se-á então a todas as células do bloco de notas.
    • Quando a saída da célula excede o limite de tamanho configurado, a saída é truncada para caber dentro do limite. O truncamento é aplicado de forma a preservar o máximo de resultados úteis possível.
  • No Databricks Runtime 16.4 LTS e abaixo:
    • Os resultados de texto apresentam um máximo de 50.000 caracteres.
    • No Databricks Runtime 12.2 e superior, você pode aumentar esse limite até 20 MB definindo a propriedade de configuração do Spark, spark.databricks.driver.maxReplOutputLength.
    • Quando a saída da célula excede o limite de tamanho configurado, a saída é totalmente descartada.

Depurador de bloco de notas

Limitações do depurador de notebook:

  • O depurador funciona apenas com Python. Não suporta Scala ou R.
  • Para aceder ao depurador, o seu notebook deve estar conectado a um dos recursos computacionais seguintes.
    • Computação sem servidor
    • Computação com modo de acesso definido como Standard (anteriormente compartilhado) no Databricks Runtime 14.3 LTS e superior
    • Computação com modo de acesso definido como Dedicado (anteriormente usuário único) no Databricks Runtime 13.3 LTS e superior
    • Computação com o modo de acesso definido como Sem isolamento compartilhado no Databricks Runtime 13.3 LTS e superior
  • O depurador não suporta a entrada em arquivos ou módulos externos.
  • Não é possível executar outros comandos no bloco de anotações quando uma sessão de depuração está ativa.
  • O depurador não suporta depuração em subprocessos quando conectado a computação sem servidor e clusters com modo de acesso definido como Padrão.

Blocos de anotações do SQL warehouse

Limitações dos blocos de anotações de armazéns SQL:

  • Quando anexado a um armazém SQL, os contextos de execução têm um tempo limite de inatividade de 8 horas

ipywidgets

Limitações de ipywidgets:

  • Um bloco de anotações usando ipywidgets deve ser anexado a um cluster em execução.
  • Os estados do widget não são preservados nas sessões do bloco de anotações. Você deve executar novamente as células do widget para processá-las sempre que anexar o bloco de anotações a um cluster.
  • Os ipywidgets de senha e controlador não são suportados.
  • 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 renderiza corretamente.)
  • Os widgets podem não renderizar corretamente se o notebook estiver no modo escuro, especialmente widgets coloridos.
  • As saídas do widget não podem ser usadas em painéis do notebook.
  • O tamanho máximo da carga útil da mensagem para 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 Databricks:

  • Um máximo de 512 widgets podem ser criados em um notebook.

  • Um nome de widget é limitado a 1024 caracteres.

  • Um rótulo de widget é limitado a 2048 caracteres.

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

  • Pode existir um máximo de 1024 opções para um widget de seleção múltipla, caixa combinada ou lista suspensa.

  • Há um problema conhecido em que um estado do widget pode não ser limpo corretamente depois de pressionar Executar tudo, mesmo depois de limpar ou remover o widget no código. Se isso acontecer, você verá uma discrepância entre os estados visual e impresso do widget. Executar novamente as células individualmente pode ignorar esse problema. Para evitar totalmente esse problema, o Databricks recomenda o uso de ipywidgets.

  • Você não deve acessar o estado do widget diretamente em contextos assíncronos, como threads, subprocessos ou streaming estruturado (foreachBatch), pois o estado do widget pode mudar 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 o uso de 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 conseguem passar argumentos entre idiomas diferentes dentro de um bloco de anotações. Você pode criar um widget arg1 em uma célula Python e usá-lo em uma célula SQL ou Scala se executar uma célula de cada vez. No entanto, isso não funciona se você usar Executar tudo ou executar o bloco de anotações como um trabalho. Algumas soluções alternativas são:

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