Tarefas

Um trabalho é uma forma de executar um caderno ou JAR imediatamente ou numa base programada. A outra forma de executar um caderno está interativamente no bloco de notas UI.

Você pode criar e executar empregos usando a UI, o CLI, e invocando a API jobs. Pode monitorizar os resultados da execução de trabalho na UI, utilizando o CLI, consultando a API e através de alertas de e-mail. Este artigo centra-se na realização de tarefas de trabalho utilizando a UI. Para os outros métodos, consulte Jobs CLI e Jobs API.

Importante

  • O número de tarefas está limitado a 1000.
  • O número de postos de trabalho que um espaço de trabalho pode criar numa hora é limitado a 5000 (inclui "run now" e "runs submit"). Este limite também afeta as tarefas criadas pela API REST e os fluxos de trabalho do bloco de notas.
  • Uma área de trabalho está limitada a 150 execuções de tarefas (em execução) em simultâneo.
  • Uma área de trabalho está limitada a 1000 execuções de tarefas (em execução e pendentes) ativas.

Ver trabalhos

Clique no ícone Jobs Ícone do menu de empregos na barra lateral. A lista jobs apresenta. A página Jobs lista todos os trabalhos definidos, a definição de cluster, o calendário, se houver, e o resultado da última corrida.

Na lista Jobs, pode filtrar trabalhos:

  • Usando palavras-chave.
  • Selecionando apenas empregos que possui ou empregos a que tem acesso. O acesso a este filtro depende da ativação do controlo de acesso do Jobs.

Também pode clicar em qualquer cabeçalho de coluna para classificar a lista de trabalhos (descendentes ou ascendentes) por essa coluna. Por predefinição, a página é classificada em nomes de emprego por ordem ascendente.

Lista de empregos

Criar um emprego

  1. Clique + Criar Trabalho. A página de detalhes de trabalho apresenta.

    Detalhe de trabalho

  2. Introduza um nome no campo de texto com o texto reservado Untitled .

  3. Especificar o tipo de tarefa: clique em Select Notebook, set JAR ou Configure spark-submit.

    • Bloco de Notas

      1. Selecione um caderno e clique em OK.
      2. Ao lado dos Parâmetros, clique em Editar. Especifique pares de valor-chave ou uma corda JSON que represente pares de valor-chave. Estes parâmetros definem o valor dos widgets.
    • JAR: Carreque um JAR, especifique a classe principal e os argumentos, e clique em OK. Para saber mais sobre os trabalhos do JAR, consulte as dicas de emprego do JAR.

    • spark-submit: Especifique a classe principal, o caminho para a biblioteca JAR, os argumentos e clique em Confirmar. Para saber mais sobre o spark-submit, consulte a documentaçãoapache spark .

      Nota

      As seguintes funcionalidades da Azure Databricks não estão disponíveis para trabalhos de apresentação de faíscas:

  4. No campo Das Bibliotecas Dependentes, clique opcionalmente em Adicionar e especificar bibliotecas dependentes. As bibliotecas dependentes são automaticamente anexadas ao cluster no lançamento. Siga as recomendações nas dependências da Biblioteca para especificar dependências.

    Importante

    Se tiver configurado uma biblioteca para instalar automaticamente em todos os clusters ou no passo seguinte selecionar um cluster encerrado existente que tenha bibliotecas instaladas, a execução do trabalho não aguarda que a instalação da biblioteca esteja concluída. Se um trabalho necessitar de uma determinada biblioteca, deve anexar a biblioteca ao trabalho no campo das Bibliotecas Dependentes.

  5. No campo Cluster, clique em Editar e especifique o cluster para executar o trabalho. No cluster Type drop-down, escolha Novo Cluster de Emprego ou Cluster de All-Purpose Existente.

    Nota

    Tenha em mente o seguinte quando escolher um tipo de cluster:

    • Para trabalhos de nível de produção ou empregos importantes para serem concluídos, recomendamos que selecione New Job Cluster.
    • Só podes gerir empregos de apresentação de faíscas em novos agrupamentos.
    • Quando se gere um emprego num novo cluster, o trabalho é tratado como uma carga de trabalho de engenharia de dados (trabalho) sujeita ao preço da carga de trabalho. Quando você tem um trabalho em um cluster existente, o trabalho é tratado como uma carga de trabalho de análise de dados (para todos os fins) sujeito a preços de carga de trabalho para todos os fins.
    • Se selecionar um cluster existente e o proprietário do emprego tiver permissão de Restart, a Azure Databricks inicia o cluster quando o trabalho está programado para ser executado.
    • Os clusters existentes funcionam melhor para tarefas como a atualização de dashboards a intervalos regulares.
    • New Job Cluster - complete a configuraçãodo cluster .
      1. Na configuração do cluster, selecione uma versão de tempo de execução. Para obter ajuda na seleção de uma versão de tempo de execução, consulte Databricks Runtime e Databricks Light.
      2. Para diminuir a hora de início do novo cluster, selecione uma piscina na configuração do cluster.
    • Cluster All-Purpose existente - no drop-down, selecione o cluster existente.
  6. No campo Agendar, clique opcionalmente em Editar e agendar o trabalho. Ver Executar um trabalho.

  7. Clique opcionalmente em Advanced e especifique opções de trabalho avançadas. Consulte opções avançadas de trabalho.

Ver detalhes do trabalho

Na página Jobs, clique num nome de trabalho na coluna Nome. A página de detalhes do trabalho mostra parâmetros de configuração, execuções ativas (execução e pendência) e execuções completas.

Detalhes do trabalho

Databricks mantém um histórico do seu trabalho por até 60 dias. Se precisar de preservar as tarefas de trabalho, recomendamos que exporte os resultados do trabalho antes de expirarem. Para obter mais informações, consulte os resultados do trabalho de exportação.

Na página de execuções de trabalho, pode ver o erro padrão, saída padrão, saída log4j para um trabalho executado clicando no link Logs na coluna Spark.

Executar uma tarefa

Pode trabalhar com um horário ou imediatamente.

Agende um trabalho

Para definir um horário para o trabalho:

  1. Clique em Editar ao lado da Agenda.

    Editar agenda

    O diálogo agendamento de trabalho apresenta.

    Agendar trabalho

  2. Especificar a granularidade do horário, a hora de início e o fuso horário. Selecione opcionalmente a caixa de verificação De Cron Syntax para exibir e editar a programação em Sintoxe Cron Quartz.

    Nota

    • A Azure Databricks impõe um intervalo mínimo de 10 segundos entre as execuções subsequentes desencadeadas pelo horário de um trabalho, independentemente da configuração dos segundos na expressão do cron.
    • Pode escolher um fuso horário que observe o horário de verão ou um horário UTC. Se selecionar uma zona que observe o horário de verão, um trabalho de hora a hora será ignorado ou poderá parecer não disparar durante uma ou duashoras quando o horário de verão começar ou terminar . Se quiser que os empregos decorram a cada hora (tempo absoluto), escolha um tempo UTC.
    • O programador de emprego, como a interface do lote Spark, não se destina a trabalhos de baixa latência. Devido a problemas de rede ou de nuvem, as tarefas podem ocasionalmente ser adiadas até vários minutos. Nestas situações, os postos de trabalho programados serão executados imediatamente após a disponibilidade do serviço.
  3. Clique em Confirmar.

    Trabalho agendado

Pausa e retomar um horário de trabalho

Para fazer uma pausa de trabalho, clique no botão Pausa ao lado do horário de trabalho:

Trabalho agendado

Para retomar um horário de trabalho pausado, clique no botão Retomar:

Retomar o trabalho

Executar um trabalho imediatamente

Para executar o trabalho imediatamente, na tabela Ative executa clique em Executar Agora.

Executar agora

Dica

Clique em Executar Agora para fazer um teste do seu caderno ou JAR quando terminar de configurar o seu trabalho. Se o seu caderno falhar, pode editá-lo e o trabalho executará automaticamente a nova versão do caderno.

Executar um trabalho com parâmetros diferentes

Pode utilizar Run Now com parâmetros diferentes para re-executar um trabalho especificando diferentes parâmetros ou valores diferentes para os parâmetros existentes.

  1. Na tabela Ative runs, clique em Executar Agora com diferentes parâmetros. O diálogo varia consoante esteja a executar um trabalho de caderno ou um trabalho de apresentação de faíscas.

    • Notebook - Uma UI que permite definir pares de valor-chave ou um objeto JSON. Pode utilizar este diálogo para definir os valores dos widgets:

      Executar caderno com parâmetros

    • spark-submit - Um diálogo contendo a lista de parâmetros apresentados. Por exemplo, pode executar o estimador SparkPi descrito na Criar um trabalho com 100 em vez das 10 divisórias padrão:

      Definir parâmetros de apresentação de faíscas

  2. Especifique os parâmetros. Os parâmetros fornecidos são fundidos com os parâmetros padrão para a execução desencadeada. Se eliminar as teclas, os parâmetros predefinidos são utilizados.

  3. Clique em Run (Executar).

Dicas de trabalho de caderno

A produção total de células portátil (a saída combinada de todas as células de portátil) está sujeita a um limite de tamanho de 20MB. Adicionalmente, a saída individual de células está sujeita a um limite de tamanho de 8MB. Se a saída total da célula exceder 20MB de tamanho, ou se a saída de uma célula individual for superior a 8MB, a execução será cancelada e marcada como falhada. Se precisar de ajuda para encontrar células próximas ou além do limite, corra o caderno contra um aglomerado para todos os fins e use esta técnica de autosave notebook.

Dicas de trabalho jar

Há algumas ressalvas que precisa de saber quando se dirige um trabalho jar.

Limites de tamanho de saída

Nota

Disponível em Databricks Runtime 6.3 ou superior.

A saída de trabalho, tal como a saída de registo emitida para o stdout, está sujeita a um limite de tamanho de 20MB. Se a saída total tiver um tamanho maior, a execução será cancelada e marcada como falhada.

Para evitar encontrar este limite, pode evitar que o stdout seja devolvido do condutor a Azure Databricks, definindo spark.databricks.driver.disableScalaOutput a configuração Spark para true . Por predefinição, o valor da bandeira é false . A bandeira controla a produção de células para trabalhos scala JAR e cadernos Scala. Se a bandeira estiver ativada, a Spark não devolve os resultados da execução do trabalho ao cliente. A bandeira não afeta os dados que estão escritos nos ficheiros de registo do cluster. A definição desta bandeira é recomendada apenas para agrupamentos de emprego para trabalhos JAR, pois irá desativar os resultados do caderno.

Use o compartilhadoSparkContext

Como o Databricks é um serviço gerido, algumas alterações de código podem ser necessárias para garantir que os seus empregos Apache Spark funcionam corretamente. Os programas de trabalho jar devem usar a API partilhada SparkContext para obter o SparkContext . Porque databricks inicializa os SparkContext programas que invocam new SparkContext() vão falhar. Para obter o SparkContext , use apenas o compartilhado SparkContext criado por Databricks:

val goodSparkContext = SparkContext.getOrCreate()
val goodSparkSession = SparkSession.builder().getOrCreate()

Além disso, existem vários métodos que deve evitar ao utilizar o partilhado SparkContext .

  • Não SparkContext.stop() ligue.
  • Não ligue System.exit(0) nem no final do seu sc.stop() Main programa. Isto pode causar um comportamento indefinido.

Use try-finally blocos para limpar o trabalho

Considere um JAR que consiste em duas partes:

  • jobBody() que contém a parte principal do trabalho
  • jobCleanup() que tem de ser executada jobBody() depois, independentemente de essa função ter sido succed ou devolveu uma exceção

Como exemplo, jobBody() pode criar tabelas, e pode usar jobCleanup() para largar estas tabelas.

A forma segura de garantir que o método de limpeza é chamado é colocar um try-finally bloqueio no código:

try {
  jobBody()
} finally {
  jobCleanup()
}

Não deve tentar limpar usando sys.addShutdownHook(jobCleanup) ou

val cleanupThread = new Thread { override def run = jobCleanup() }
Runtime.getRuntime.addShutdownHook(cleanupThread)

Devido à forma como a vida útil dos recipientes Spark é gerida em Azure Databricks, os ganchos de paragem não são executados de forma fiável.

Configurar parâmetros de trabalho jar

Os trabalhos do JAR são parametrizados com uma variedade de cordas.

  • Na UI, introduz os parâmetros na caixa de texto arguments que são divididos numa matriz aplicando regras de análise de conchas POSIX. Para mais informações, consulte a documentação shlex.
  • Na API, introduz os parâmetros como uma matriz JSON padrão. Para mais informações, consulte SparkJarTask. Para aceder a estes parâmetros, inspecione a String matriz passada para a sua main função.

Ver detalhes da execução de emprego

Uma página de detalhes de execução de trabalho contém saída de trabalho e links para registos:

Detalhes da execução de emprego

Pode ver detalhes de execução de emprego na página Jobs e na página Clusters.

  • Clique no ícone jobs  icon Do ícone do menu . Na coluna Executar da Tabela Concluída nos últimos 60 dias, clique no link número de execução.

    Trabalho gerido a partir de Jobs

  • Clique no  ícone clusters clusters clusters . Numa linha de trabalho na tabela De Clusters de Emprego, clique no link Job Run.

    Trabalho executado a partir de Clusters

Resultados da execução do emprego de exportação

Pode exportar resultados de execução de cadernos e registos de trabalho para todos os tipos de emprego.

Resultados do caderno de exportação

Pode persistir no trabalho exportando os seus resultados. Para o trabalho de portátil, pode exportar um caderno renderizado que pode ser posteriormente importado para o seu espaço de trabalho databricks.

  1. Na página de detalhes do trabalho, clique num nome de execução de trabalho na coluna Executar.

    Execução de emprego

  2. Clique em Exportação para HTML.

    Resultado da execução das exportações

Registos de trabalho de exportação

Também pode exportar os registos para a sua tarefa. Para automatizar este processo, pode configurar o seu trabalho de modo a que ele entregue automaticamente registos ao DBFS através da API job. Para obter mais informações, consulte os campos NewCluster e ClusterLogConf na chamada API job Create.

Editar trabalhos

Para editar um trabalho, clique no link para o nome do trabalho na lista Jobs.

Eliminar trabalhos

Para eliminar um trabalho, clique no x na coluna Action na lista Jobs.

Dependências de biblioteca

O condutor da Spark tem certas dependências da biblioteca que não podem ser ultrapassadas. Estas bibliotecas têm prioridade sobre qualquer uma das suas bibliotecas que entram em conflito com elas.

Para obter a lista completa das dependências da biblioteca do condutor, corram o seguinte comando dentro de um caderno anexado a um conjunto da mesma versão Spark (ou ao cluster com o condutor que pretende examinar).

%sh
ls /databricks/jars

Gerir as dependências da biblioteca

Uma boa regra do polegar quando se lida com as dependências da biblioteca enquanto cria JARs para empregos é listar Spark e Hadoop como provided dependências. Em Maven, adicione Spark e/ou Hadoop como as dependências fornecidas como mostrado no exemplo seguinte.

<dependency>
  <groupId>org.apache.spark</groupId>
  <artifactId>spark-core_2.11</artifactId>
  <version>2.3.0</version>
  <scope>provided</scope>
</dependency>
<dependency>
  <groupId>org.apache.hadoop</groupId>
  <artifactId>hadoop-core</artifactId>
  <version>1.2.1</version>
  <scope>provided</scope>
</dependency>

Em sbt , adicione Spark e Hadoop como dependências fornecidas como mostrado no exemplo seguinte.

libraryDependencies += "org.apache.spark" %% "spark-core" % "2.3.0" % "provided"
libraryDependencies += "org.apache.hadoop" %% "hadoop-core" % "1.2.1" % "provided"

Dica

Especifique a versão Scala correta para as suas dependências com base na versão que está a executar.

Opções avançadas para trabalhos

Corridas simultâneas máximas

O número máximo de corridas que podem ser executadas em paralelo. Ao iniciar uma nova corrida, a Azure Databricks salta a corrida se o trabalho já tiver atingido o seu número máximo de execuções ativas. Desafie este valor superior ao padrão de 1 se quiser ser capaz de realizar várias execuções do mesmo trabalho simultaneamente. Isto é útil, por exemplo, se ativar o seu trabalho num horário frequente e quiser permitir que as corridas consecutivas se sobreponham entre si, ou se pretender desencadear várias correções que diferem pelos seus parâmetros de entrada.

Alertas

Alertas de e-mail enviados em caso de insuficiência de emprego, sucesso ou tempo limite. Pode definir alertas para o início de trabalho, o sucesso do emprego e a insuficiência de emprego (incluindo empregos ignorados), fornecendo vários endereços de e-mail separados por vírgulas para cada tipo de alerta. Também pode optar por não ter alertas para as tarefas de trabalho ignoradas.

Configurar alertas de e-mail

Integre estes alertas de e-mail com as suas ferramentas de notificação favoritas, incluindo:

Intervalo de tempo

O tempo máximo de conclusão para um trabalho. Se o trabalho não estiver concluído neste momento, a Databricks define o seu estatuto para "Timed out".

Tentativas

Uma política que determina quando e quantas vezes as corridas falhadas são novamente julgadas.

Política de repetição

Nota

Se configurar o Timeout e o Retries, o tempo limite aplica-se a cada repetição.

Controlar o acesso a empregos

O controlo do acesso ao emprego permite que os proprietários e administradores de emprego concedam permissões finas nos seus postos de trabalho. Com os controlos de acesso ao trabalho, os proprietários de emprego podem escolher quais outros utilizadores ou grupos podem ver os resultados do trabalho. Os proprietários também podem escolher quem pode gerir as execuções do seu trabalho (isto é, invocar Run Now e Cancelar.)

Consulte o controlo de acesso jobs para mais detalhes.