Compartilhar via


Transformar dados usando a atividade do Spark no Azure Data Factory e no Synapse Analytics

APLICA-SE A: Azure Data Factory Azure Synapse Analytics

Dica

Data Factory no Microsoft Fabric é a próxima geração de Azure Data Factory, com uma arquitetura mais simples, IA interna e novos recursos. Se você não estiver familiarizado com a integração de dados, comece com Fabric Data Factory. As cargas de trabalho existentes do ADF podem ser atualizadas para Fabric para acessar novos recursos em ciência de dados, análise em tempo real e relatórios.

A atividade do Spark em pipelines de data factory e do Synapse executa um programa do Spark em um cluster do HDInsight próprio ou sob demanda. Este artigo se baseia no artigo sobre atividades de transformação de dados que apresenta uma visão geral da transformação de dados e as atividades de transformação permitidas. Quando você usa um serviço vinculado do Spark sob demanda, o serviço cria automaticamente um cluster Spark para você Just-In-Time a fim de processar os dados e, em seguida, exclui o cluster quando o processamento for concluído.

Adicionar uma atividade do Spark a um pipeline com a interface do usuário

Para usar uma atividade do Spark em um pipeline, conclua as seguintes etapas:

  1. Procure Spark no painel Atividades do pipeline e arraste uma atividade Spark para a tela do pipeline.

  2. Selecione a nova atividade do Spark na tela se ela ainda não estiver selecionada.

  3. Selecione a guia Cluster HDI para selecionar ou criar um serviço vinculado a um cluster HDInsight que será usado para executar a atividade do Spark.

    Mostra a interface do usuário para uma atividade do Spark.

  4. Selecione a guia Script/Jar para selecionar ou criar um novo serviço vinculado de trabalho para uma conta Armazenamento do Azure que hospedará seu script. Especifique um caminho para o arquivo a ser executado nesse local. Você também pode configurar detalhes avançados, incluindo um usuário proxy, uma configuração de depuração, bem como argumentos e parâmetros de configuração do Spark a serem passados para o script.

    Mostra a interface do usuário da guia Script/Jar para uma atividade do Spark.

Propriedades da Atividade do Spark

Esta é a definição do JSON de exemplo de uma atividade do Spark:

{
    "name": "Spark Activity",
    "description": "Description",
    "type": "HDInsightSpark",
    "linkedServiceName": {
        "referenceName": "MyHDInsightLinkedService",
        "type": "LinkedServiceReference"
    },
    "typeProperties": {
        "sparkJobLinkedService": {
            "referenceName": "MyAzureStorageLinkedService",
            "type": "LinkedServiceReference"
        },
        "rootPath": "adfspark",
        "entryFilePath": "test.py",
        "sparkConfig": {
            "ConfigItem1": "Value"
        },
        "getDebugInfo": "Failure",
        "arguments": [
            "SampleHadoopJobArgument1"
        ]
    }
}

A tabela a seguir descreve as propriedades JSON usadas na definição de JSON:

Propriedade Descrição Obrigatório
nome Nome da atividade na linha de processamento. Sim
descrição Texto que descreve o que a atividade faz. Não
tipo Para a atividade do tipo Spark, o tipo de atividade é HDInsightSpark. Sim
nomeDoServiçoVinculado Nome do serviço vinculado do HDInsight Spark no qual o programa Spark é executado. Para saber mais sobre esse serviço vinculado, consulte o artigo Compute linked services (Serviços de computação vinculados). Sim
SparkJobLinkedService O serviço vinculado do Armazenamento do Azure que contém o arquivo de tarefa, as dependências e os logs do Spark. Apenas há suporte para Armazenamento de Blobs do Azure e ADLS Gen2 serviços associados aqui. Se você não especificar um valor para essa propriedade, o armazenamento associado ao cluster HDInsight será usado. O valor desta propriedade só pode ser um serviço vinculado do Armazenamento do Microsoft Azure. Não
caminho raiz O contêiner do Azure Blob e a pasta que contém o arquivo Spark. O nome do arquivo é sensível a maiúsculas e minúsculas. Consulte a seção de estrutura de pasta (próxima seção) para obter detalhes sobre a estrutura desta pasta. Sim
entryFilePath Caminho relativo à pasta raiz do código/pacote Spark. O arquivo de entrada deve ser um arquivo Python ou um arquivo .jar. Sim
className Classe principal Java/Spark do aplicativo Não
argumentos Uma lista de argumentos de linha de comando para o programa Spark. Não
proxyUser A conta de usuário a ser representada para execução do programa Spark Não
sparkConfig Especifique valores para as propriedades de configuração do Spark listadas no tópico: Configuração do Spark – propriedades do aplicativo. Não
getDebugInfo Especifica quando os arquivos de log do Spark são copiados para o armazenamento Azure usado pelo cluster HDInsight (ou) especificado pelo sparkJobLinkedService. Valores permitidos: Nenhum, Sempre ou Falha. Valor padrão: Nenhum. Não

Estrutura de pastas

Os trabalhos do Spark são mais extensíveis do que os trabalhos do Pig/Hive. Para trabalhos do Spark, você pode fornecer várias dependências, como pacotes jar (colocados no Java CLASSPATH), arquivos Python (colocados no PYTHONPATH) e quaisquer outros arquivos.

Crie a seguinte estrutura de pastas no Armazenamento de Blob do Azure referenciado pelo serviço vinculado do HDInsight. Depois, carregue os arquivos dependentes nas subpastas apropriadas na pasta raiz, representada por entryFilePath. Por exemplo, faça upload de arquivos Python para a subpasta pyFiles e arquivos JAR para a subpasta jars da pasta raiz. Em runtime, o serviço espera a seguinte estrutura de pastas no armazenamento de Blobs Azure:

Caminho Descrição Obrigatório Tipo
. (raiz) O caminho raiz do trabalho do Spark no serviço vinculado ao armazenamento Sim Pasta
<definido pelo usuário> O caminho que aponta para o arquivo de entrada do trabalho do Spark Sim Arquivo
./jars Todos os arquivos nessa pasta são carregados e colocados no Java classpath do cluster Não Pasta
./pyFiles Todos os arquivos nessa pasta são carregados e colocados no PYTHONPATH do cluster Não Pasta
./files Todos os arquivos nessa pasta são carregados e colocados no diretório de trabalho executor Não Pasta
./arquivos Todos os arquivos nessa pasta são descompactados Não Pasta
./logs A pasta que contém os logs do cluster do Spark. Não Pasta

Aqui está um exemplo para um armazenamento que contém dois arquivos de trabalho do Spark no Armazenamento de Blobs do Azure referenciado pelo serviço vinculado do HDInsight.

SparkJob1
	main.jar
	files
		input1.txt
		input2.txt
	jars
		package1.jar
		package2.jar
	logs
	
	archives
	
	pyFiles

SparkJob2
	main.py
	pyFiles
		scrip1.py
		script2.py
	logs
	
	archives
	
	jars
	
	files
	

Consulte os seguintes artigos que explicam como transformar dados de outras maneiras: