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

APLICA-SE A: Azure Data Factory Azure Synapse Analytics

Gorjeta

Experimente o Data Factory no Microsoft Fabric, uma solução de análise tudo-em-um para empresas. O Microsoft Fabric abrange tudo, desde a movimentação de dados até ciência de dados, análises em tempo real, business intelligence e relatórios. Saiba como iniciar uma nova avaliação gratuitamente!

A atividade do Spark em uma fábrica de dados e pipelines Synapse executa um programa Spark por conta própria ou sob demanda cluster HDInsight. Este artigo baseia-se no artigo de atividades de transformação de dados, que apresenta uma visão geral da transformação de dados e das atividades de transformação suportadas. Quando você usa um serviço vinculado do Spark sob demanda, o serviço cria automaticamente um cluster do Spark para que você processe os dados no momento certo e, em seguida, exclui o cluster assim que 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 do Spark para a tela do pipeline.

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

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

    Shows the UI for a Spark activity.

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

    Shows the UI for the Script / Jar tab for a Spark activity.

Propriedades da atividade de faísca

Aqui está a definição JSON de exemplo de uma atividade 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 JSON:

Propriedade Descrição Necessário
nome Nome da atividade no pipeline. Sim
descrição Texto descrevendo o que a atividade faz. Não
tipo Para Spark Activity, o tipo de atividade é HDInsightSpark. Sim
linkedServiceName 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 Serviços vinculados de computação. Sim
SparkJobLinkedService O serviço vinculado do Armazenamento do Azure que contém o arquivo de trabalho, as dependências e os logs do Spark. Apenas o Armazenamento de Blobs do Azure e os serviços vinculados ADLS Gen2 são suportados aqui. Se você não especificar um valor para essa propriedade, o armazenamento associado ao cluster HDInsight será usado. O valor dessa propriedade só pode ser um serviço vinculado do Armazenamento do Azure. Não
rootPath O contêiner e a pasta de Blob do Azure que contém o arquivo Spark. O nome do arquivo diferencia maiúsculas de minúsculas. Consulte a seção de estrutura de pastas (próxima seção) para obter detalhes sobre a estrutura dessa pasta. Sim
entryFilePath Caminho relativo para a pasta raiz do código/pacote do 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 executar o 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 do 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 de faísca são mais extensíveis do que os trabalhos de porco/colmeia. 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 HDInsight. Em seguida, carregue arquivos dependentes para as subpastas apropriadas na pasta raiz representada por entryFilePath. Por exemplo, carregue arquivos Python para a subpasta pyFiles e arquivos jar para a subpasta jars da pasta raiz. No tempo de execução, o serviço espera a seguinte estrutura de pastas no armazenamento de Blob do Azure:

Caminho Description Necessário Tipo
. (raiz) O caminho raiz do trabalho do Spark no serviço vinculado de armazenamento Sim Pasta
<definido pelo usuário > O caminho apontando para o arquivo de entrada do trabalho do Spark Sim Ficheiro
./frascos Todos os arquivos sob esta pasta são carregados e colocados no classpath Java do cluster Não Pasta
./pyArquivos Todos os arquivos sob esta pasta são carregados e colocados no PYTHONPATH do cluster Não Pasta
./ficheiros Todos os arquivos sob esta pasta são carregados e colocados no diretório de trabalho do executor Não Pasta
./Arquivos Todos os arquivos nesta pasta são descompactados Não Pasta
./logs A pasta que contém logs do cluster Spark. Não Pasta

Aqui está um exemplo de um armazenamento que contém dois arquivos de trabalho do Spark no Armazenamento de Blob 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: