Limitações conhecidas Databricks Notebook

Este artigo aborda as limitações conhecidas do Databricks Notebook. Para obter mais limites de recurso, consulte limites de recurso.

Notebook dimensionamento

  • As células individuais do site Notebook têm um limite de entrada de 6 MB.

  • O tamanho máximo do site Notebook para o salvamento automático, a importação, a exportação e a clonagem do Snapshot de revisão é de 10 MB.

  • O senhor pode salvar manualmente o Notebook em até 32 MB.

Notebook tabela de resultados

  • Os resultados da tabela são limitados a 10 mil linhas ou 2 MB, o que for menor.

  • Job clusters têm um tamanho máximo de saída Notebook de 30 MB.

  • Os resultados de comando não tabulares têm um limite de 20 MB.

  • Em default, os resultados de texto retornam um máximo de 50.000 caracteres. Com Databricks Runtime 12.2 LTS e acima, o senhor pode aumentar esse limite definindo a propriedade de configuração Spark spark.databricks.driver.maxReplOutputLength.

Notebook depurador

Limitações do depuradorNotebook:

  • O depurador funciona apenas com o Python. Ele não é compatível com Scala ou R.

  • O depurador não funciona em clusters de modo de acesso compartilhado.

  • O depurador não é compatível com o passo a passo em arquivos ou módulos externos.

  • O senhor não pode executar outro comando no site Notebook quando uma sessão de depuração estiver ativa.

SQL warehouse Caderno de anotações

Limitações do SQL warehouse Notebook:

  • Quando anexado 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 usando ipywidgets deve ser anexado a um clusters em execução.

  • Os estados dos widgets não são preservados nas sessões do site Notebook. O senhor deve reexecutar as células do widget para renderizá-las sempre que anexar o Notebook a um cluster.

  • Não há suporte para os ipywidgets Password e Controller.

  • Os widgets HTMLMath e rótulo 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).

  • Os widgets podem não ser renderizados corretamente se o site Notebook estiver no modo escuro, especialmente os widgets coloridos.

  • As saídas do widget não podem ser usadas na visualização do painel Notebook.

  • O tamanho máximo da carga útil da mensagem para um ipywidget é de 5 MB. Os widgets que usam imagens ou dados de texto grandes podem não ser renderizados corretamente.

Widgets do Databricks

Limitações dos widgets da Databricks:

  • É possível criar um máximo de 512 widgets em um site Notebook.

  • O nome de um widget é limitado a 1024 caracteres.

  • O rótulo de um widget é 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 dropdown.

  • Há um problema conhecido em que o estado de um 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, o senhor verá uma discrepância entre os estados visual e impresso do widget. Executar novamente as células individualmente pode contornar esse problema. Para evitar totalmente esse problema, a Databricks recomenda o uso do ipywidgets.

  • O senhor não deve acessar o estado do widget diretamente em contextos assíncronos, como threads, subprocessos ou transmissão estruturada(foreachBatch), pois o estado do widget pode mudar enquanto o código assíncrono estiver em execução. Se precisar acessar o estado do widget em um contexto assíncrono, passe-o como um argumento. Por exemplo, se o senhor 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, a 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()
    
  • Em geral, os widgets não podem passar argumentos entre idiomas diferentes em um Notebook. O senhor 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 o senhor usar a opção Executar tudo ou executar o Notebook como Job. Algumas soluções alternativas são:

    • Para Notebooks que não misturam idiomas, o senhor pode criar um Notebook para cada idioma e passar os argumentos ao executar o Notebook.

    • Você pode acessar o widget usando uma spark.sql() chamada. Por exemplo, em Python: spark.sql("select getArgument('arg1')").take(1)[0][0].