Tutorial: Criar a definição de tarefas do Apache Spark no Synapse Studio

Este tutorial demonstra como utilizar o Synapse Studio para criar definições de tarefas do Apache Spark e, em seguida, submetê-las para um conjunto do Apache Spark sem servidor.

Este tutorial abrange as seguintes tarefas:

  • Criar uma definição de tarefa do Apache Spark para o PySpark (Python)
  • Criar uma definição de tarefa do Apache Spark para o Spark (Scala)
  • Criar uma definição de tarefa do Apache Spark para o .NET Spark (C#/F#)
  • Criar definição de tarefa ao importar um ficheiro JSON
  • Exportar um ficheiro de definição de tarefas do Apache Spark para o local
  • Submeter uma definição de tarefa do Apache Spark como uma tarefa em lote
  • Adicionar uma definição de tarefa do Apache Spark ao pipeline

Pré-requisitos

Antes de começar este tutorial, certifique-se de que cumpre os seguintes requisitos:

  • Uma área de trabalho do Azure Synapse Analytics. Para obter instruções, veja Criar uma área de trabalho do Azure Synapse Analytics.
  • Um conjunto do Apache Spark sem servidor.
  • Uma conta de armazenamento do ADLS Gen2. Tem de ser o Contribuidor de Dados de Blobs de Armazenamento do sistema de ficheiros do ADLS Gen2 com o qual pretende trabalhar. Se não estiver, tem de adicionar a permissão manualmente.
  • Se não quiser utilizar o armazenamento predefinido da área de trabalho, ligue a conta de armazenamento do ADLS Gen2 necessária no Synapse Studio.

Criar uma definição de tarefa do Apache Spark para o PySpark (Python)

Nesta secção, vai criar uma definição de tarefa do Apache Spark para o PySpark (Python).

  1. Abra Synapse Studio.

  2. Pode aceder a Ficheiros de exemplo para criar definições de tarefas do Apache Sparkpara transferir ficheiros de exemplo para python.zipe, em seguida, deszipar o pacote comprimido e extrair os ficheiros wordcount.py e shakespeare.txt .

    ficheiros de exemplo

  3. Selecione Dados ->Ligados ->Azure Data Lake Storage Gen2 e carregue wordcount.py e shakespeare.txt para o sistema de ficheiros do ADLS Gen2.

    carregar ficheiro Python

  4. Selecione Programar hub, selecione o ícone "+" e selecione Definição da tarefa do Spark para criar uma nova definição de tarefa do Spark.

    criar nova definição para python

  5. Selecione PySpark (Python) na lista pendente Idioma na janela principal da definição da tarefa do Apache Spark.

    selecionar python

  6. Preencha as informações da definição da tarefa do Apache Spark.

    Propriedade Descrição
    Nome da definição da tarefa Introduza um nome para a definição da tarefa do Apache Spark. Este nome pode ser atualizado em qualquer altura até ser publicado.
    Exemplo: job definition sample
    Ficheiro de definição principal O ficheiro principal utilizado para a tarefa. Selecione um ficheiro PY no seu armazenamento. Pode selecionar Carregar ficheiro para carregar o ficheiro para uma conta de armazenamento.
    Exemplo: abfss://…/path/to/wordcount.py
    Argumentos da linha de comandos Argumentos opcionais para a tarefa.
    Exemplo: abfss://…/path/to/shakespeare.txtabfss://…/path/to/result
    Nota: dois argumentos para a definição da tarefa de exemplo são separados por um espaço.
    Ficheiros de referência Ficheiros adicionais utilizados para referência no ficheiro de definição principal. Pode selecionar Carregar ficheiro para carregar o ficheiro para uma conta de armazenamento.
    Conjunto do Spark A tarefa será submetida para o conjunto do Apache Spark selecionado.
    Versão do Spark Versão do Apache Spark que o conjunto do Apache Spark está a executar.
    Executors Número de executadores a serem fornecidos no conjunto do Apache Spark especificado para a tarefa.
    Tamanho do executor Número de núcleos e memória a utilizar para executores fornecidos no conjunto do Apache Spark especificado para a tarefa.
    Tamanho do controlador Número de núcleos e memória a utilizar para o controlador indicado no conjunto do Apache Spark especificado para a tarefa.
    Configuração do Apache Spark Personalize as configurações ao adicionar propriedades abaixo. Se não adicionar uma propriedade, Azure Synapse utilizará o valor predefinido quando aplicável.

    Definir o valor da definição da tarefa do Spark para Python

  7. Selecione Publicar para guardar a definição da tarefa do Apache Spark.

    publicar definição de py

Criar uma definição de tarefa do Apache Spark para o Apache Spark(Scala)

Nesta secção, vai criar uma definição de tarefa do Apache Spark para o Apache Spark(Scala).

  1. Abra o Azure Synapse Studio.

  2. Pode aceder a Ficheiros de exemplo para criar definições de tarefas do Apache Sparkpara transferir ficheiros de exemplo para scala.zipe, em seguida, deszipar o pacote comprimido e extrair os ficheiros wordcount.jar e shakespeare.txt .

    scala de ficheiros de exemplo

  3. Selecione Dados ->Ligado ->Azure Data Lake Storage Gen2 e carregue wordcount.jar e shakespeare.txt para o sistema de ficheiros do ADLS Gen2.

    preparar a estrutura scala

  4. Selecione Programar hub, selecione o ícone "+" e selecione Definição da tarefa do Spark para criar uma nova definição de tarefa do Spark. (A imagem de exemplo é igual ao passo 4 de Criar uma definição de tarefa do Apache Spark (Python) para PySpark.)

  5. Selecione Spark(Scala) na lista pendente Idioma na janela principal da definição da tarefa do Apache Spark.

    selecionar scala

  6. Preencha as informações da definição da tarefa do Apache Spark. Pode copiar as informações de exemplo.

    Propriedade Descrição
    Nome da definição da tarefa Introduza um nome para a definição da tarefa do Apache Spark. Este nome pode ser atualizado em qualquer altura até ser publicado.
    Exemplo: scala
    Ficheiro de definição principal O ficheiro principal utilizado para a tarefa. Selecione um ficheiro JAR no seu armazenamento. Pode selecionar Carregar ficheiro para carregar o ficheiro para uma conta de armazenamento.
    Exemplo: abfss://…/path/to/wordcount.jar
    Nome da classe principal O identificador completamente qualificado ou a classe principal que está no ficheiro de definição principal.
    Exemplo: WordCount
    Argumentos da linha de comandos Argumentos opcionais para a tarefa.
    Exemplo: abfss://…/path/to/shakespeare.txtabfss://…/path/to/result
    Nota: dois argumentos para a definição da tarefa de exemplo são separados por um espaço.
    Ficheiros de referência Ficheiros adicionais utilizados para referência no ficheiro de definição principal. Pode selecionar Carregar ficheiro para carregar o ficheiro para uma conta de armazenamento.
    Conjunto do Spark A tarefa será submetida para o conjunto do Apache Spark selecionado.
    Versão do Spark Versão do Apache Spark que o conjunto do Apache Spark está a executar.
    Executors Número de executadores a serem fornecidos no conjunto do Apache Spark especificado para a tarefa.
    Tamanho do executor Número de núcleos e memória a utilizar para executores fornecidos no conjunto do Apache Spark especificado para a tarefa.
    Tamanho do controlador Número de núcleos e memória a utilizar para o controlador indicado no conjunto do Apache Spark especificado para a tarefa.
    Configuração do Apache Spark Personalize as configurações ao adicionar propriedades abaixo. Se não adicionar uma propriedade, Azure Synapse utilizará o valor predefinido quando aplicável.

    Definir o valor da definição da tarefa do Spark para scala

  7. Selecione Publicar para guardar a definição da tarefa do Apache Spark.

    publicar definição de scala

Criar uma definição de tarefa do Apache Spark para o .NET Spark(C#/F#)

Nesta secção, vai criar uma definição de tarefa do Apache Spark para .NET Spark(C#/F#).

  1. Abra o Azure Synapse Studio.

  2. Pode aceder a Ficheiros de exemplo para criar definições de tarefas do Apache Spark para transferir ficheiros de exemplo para dotnet.zipe, em seguida, deszipar o pacote comprimido e extrair os ficheiroswordcount.zip e shakespeare.txt .

    dotnet de exemplo

  3. Selecione Dados -Ligado ->>Azure Data Lake Storage Gen2 e carregue wordcount.zip e shakespeare.txt para o sistema de ficheiros do ADLS Gen2.

    preparar a estrutura dotnet

  4. Selecione Programar hub, selecione o ícone "+" e selecione Definição da tarefa do Spark para criar uma nova definição de tarefa do Spark. (A imagem de exemplo é igual ao passo 4 de Criar uma definição de tarefa do Apache Spark (Python) para PySpark.)

  5. Selecione .NET Spark(C#/F#) na lista pendente Idioma na janela principal Definição de Tarefas do Apache Spark.

    selecionar dotnet

  6. Preencha as informações da Definição de Tarefas do Apache Spark. Pode copiar as informações de exemplo.

    Propriedade Descrição
    Nome da definição da tarefa Introduza um nome para a definição da tarefa do Apache Spark. Este nome pode ser atualizado em qualquer altura até ser publicado.
    Exemplo: dotnet
    Ficheiro de definição principal O ficheiro principal utilizado para a tarefa. Selecione um ficheiro ZIP que contenha a sua aplicação .NET para Apache Spark (ou seja, o ficheiro executável principal, DLLs que contêm funções definidas pelo utilizador e outros ficheiros necessários) a partir do seu armazenamento. Pode selecionar Carregar ficheiro para carregar o ficheiro para uma conta de armazenamento.
    Exemplo: abfss://…/path/to/wordcount.zip
    Ficheiro executável principal O ficheiro executável principal no ficheiro ZIP de definição principal.
    Exemplo: WordCount
    Argumentos da linha de comandos Argumentos opcionais para a tarefa.
    Exemplo: abfss://…/path/to/shakespeare.txtabfss://…/path/to/result
    Nota: dois argumentos para a definição da tarefa de exemplo são separados por um espaço.
    Ficheiros de referência Ficheiros adicionais necessários pelos nós de trabalho para executar a aplicação .NET para Apache Spark que não está incluída no ficheiro ZIP de definição principal (ou seja, jars dependentes, DLLs de função definidas pelo utilizador adicionais e outros ficheiros de configuração). Pode selecionar Carregar ficheiro para carregar o ficheiro para uma conta de armazenamento.
    Conjunto do Spark A tarefa será submetida para o conjunto do Apache Spark selecionado.
    Versão do Spark Versão do Apache Spark que o conjunto do Apache Spark está a executar.
    Executors Número de executadores a serem fornecidos no conjunto do Apache Spark especificado para a tarefa.
    Tamanho do executor Número de núcleos e memória a utilizar para executores fornecidos no conjunto do Apache Spark especificado para a tarefa.
    Tamanho do controlador Número de núcleos e memória a utilizar para o controlador indicado no conjunto do Apache Spark especificado para a tarefa.
    Configuração do Apache Spark Personalize as configurações ao adicionar propriedades abaixo. Se não adicionar uma propriedade, Azure Synapse utilizará o valor predefinido quando aplicável.

    Definir o valor da definição da tarefa do Spark para o dotnet

  7. Selecione Publicar para guardar a definição da tarefa do Apache Spark.

    publicar definição de dotnet

Nota

Para a configuração do Apache Spark, se a definição da tarefa do Apache Spark de configuração do Apache Spark não fizer nada de especial, a configuração predefinida será utilizada ao executar a tarefa.

Criar a definição de tarefa do Apache Spark ao importar um ficheiro JSON

Pode importar um ficheiro JSON local existente para Azure Synapse área de trabalho a partir do menu Ações (...) do Explorador de definições de tarefas do Apache Spark para criar uma nova definição de tarefa do Apache Spark.

criar definição de importação

A definição da tarefa do Spark é totalmente compatível com a API Livy. Pode adicionar parâmetros adicionais para outras propriedades livy (Livy Docs - API REST (apache.org) no ficheiro JSON local. Também pode especificar os parâmetros relacionados com a configuração do Spark na propriedade de configuração, conforme mostrado abaixo. Em seguida, pode importar o ficheiro JSON de volta para criar uma nova definição de tarefa do Apache Spark para a sua tarefa de lote. JSON de exemplo para importação de definições do Spark:

   {
  "targetBigDataPool": {
    "referenceName": "socdemolarge",
    "type": "BigDataPoolReference"
  },
  "requiredSparkVersion": "2.3",
  "language": "scala",
  "jobProperties": {
    "name": "robinSparkDefinitiontest",
    "file": "adl://socdemo-c14.azuredatalakestore.net/users/robinyao/wordcount.jar",
    "className": "WordCount",
    "args": [
      "adl://socdemo-c14.azuredatalakestore.net/users/robinyao/shakespeare.txt"
    ],
    "jars": [],
    "files": [],
    "conf": {
      "spark.dynamicAllocation.enabled": "false",
      "spark.dynamicAllocation.minExecutors": "2",
      "spark.dynamicAllocation.maxExecutors": "2"
    },
    "numExecutors": 2,
    "executorCores": 8,
    "executorMemory": "24g",
    "driverCores": 8,
    "driverMemory": "24g"
  }
}

outras propriedades livy

Exportar um ficheiro de definição de tarefas do Apache Spark existente

Pode exportar ficheiros de definição de tarefas do Apache Spark existentes para o local a partir do menu Ações (...) do Explorador de Ficheiros. Pode atualizar ainda mais o ficheiro JSON para propriedades adicionais do Livy e importá-lo novamente para criar uma nova definição de tarefa, se necessário.

criar definição de exportação

criar definição de exportação 2

Submeter uma definição de tarefa do Apache Spark como uma tarefa em lote

Depois de criar uma definição de tarefa do Apache Spark, pode submetê-la a um conjunto do Apache Spark. Certifique-se de que é o Contribuidor de Dados de Blobs de Armazenamento do sistema de ficheiros do ADLS Gen2 com o qual pretende trabalhar. Se não estiver, tem de adicionar a permissão manualmente.

Cenário 1: Submeter a definição da tarefa do Apache Spark

  1. Abra uma janela de definição de tarefa do Apache Spark ao selecioná-la.

    Abrir a definição da tarefa do Spark para submeter

  2. Selecione o botão Submeter para submeter o projeto para o Conjunto do Apache Spark selecionado. Pode selecionar o separador URL de monitorização do Spark para ver o LogQuery da aplicação Apache Spark.

    Selecionar o botão submeter para submeter a definição de tarefa do Spark

    A caixa de diálogo Submissão do Spark

Cenário 2: Ver o progresso da tarefa do Apache Spark

  1. Selecione Monitorizar e, em seguida, selecione a opção Aplicações do Apache Spark . Pode encontrar a aplicação do Apache Spark submetida.

    Ver a aplicação Spark

  2. Em seguida, selecione uma aplicação do Apache Spark, é apresentada a janela de tarefa SparkJobDefinition . Pode ver o progresso da execução da tarefa a partir daqui.

    Ver o LogQuery da aplicação Spark

Cenário 3: Verificar o ficheiro de saída

  1. Selecione Dados ->Ligado ->Azure Data Lake Storage Gen2 (hozhaobdbj), abra a pasta de resultados criada anteriormente, pode aceder à pasta de resultados e verificar se a saída foi gerada.

    Ver ficheiro de saída

Adicionar uma definição de tarefa do Apache Spark ao pipeline

Nesta secção, vai adicionar uma definição de tarefa do Apache Spark ao pipeline.

  1. Abra uma definição de tarefa existente do Apache Spark.

  2. Selecione o ícone no canto superior direito da definição da tarefa do Apache Spark, selecione Pipeline Existente ou Novo pipeline. Pode consultar a página Pipeline para obter mais informações.

    adicionar ao pipeline1

    adicionar ao pipeline2

Passos seguintes

Em seguida, pode utilizar o Azure Synapse Studio para criar conjuntos de dados do Power BI e gerir dados do Power BI. Avance para o artigo Ligar uma área de trabalho do Power BI a uma área de trabalho do Synapse para saber mais.