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

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

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.

    Shows the UI for a Spark activity.

  4. Selecione a guia Script / Jar para selecionar ou criar um serviço vinculado de trabalho a uma conta do Armazenamento do Azure que hospedará o 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.

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

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
name Nome da atividade no pipeline. Sim
descrição Texto que descreve o que a atividade faz. Não
type Para a atividade do Spark, 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 Compute linked services (Serviços de computação vinculados). Sim
SparkJobLinkedService O serviço vinculado ao Armazenamento do Azure que contém o arquivo de trabalho, dependências e os logs do Spark. Somente os serviços vinculados do Armazenamento de Blobs do Azure e do ADLS Gen2 são compatíveis 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
rootPath O contêiner de Blob do Azure e a pasta que contém o arquivo Spark. O nome do arquivo diferencia maiúsculas de 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. jar ou um arquivo Python. Sim
className Classe principal de 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 no armazenamento do Azure usado pelo cluster HDInsight (ou) especificado por 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 CLASSPATH Java), arquivos Python (colocados no PYTHONPATH) e outros arquivos.

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

Caminho Descrição Obrigatório Type
. (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 caminho de classe Java 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
./archives 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

Veja um exemplo de um armazenamento que contém dois arquivos de trabalho do Spark no Armazenamento de Blobs do Azure referenciado pelo serviço vinculado ao 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: