Compartilhar via


Enviar trabalhos do Spark usando ferramentas de linha de comando

Aplica-se a:SQL Server 2019 (15.x)

Este artigo fornece diretrizes sobre como usar ferramentas de linha de comando para executar trabalhos do Spark em Clusters de Big Data do SQL Server.

Important

Os Clusters de Big Data do Microsoft SQL Server 2019 foram desativados. O suporte para clusters de Big Data do SQL Server 2019 terminou em 28 de fevereiro de 2025. Para obter mais informações, consulte a postagem no blog de anúncios e as opções de Big Data na plataforma microsoft SQL Server.

Prerequisites

  • Ferramentas de Big Data do SQL Server 2019 configuradas e conectadas ao cluster:
    • azdata
    • Um curl aplicativo para executar chamadas à API REST para Livy

Trabalhos do Spark que usam azdata ou Livy

Este artigo fornece exemplos de como usar padrões de linha de comando para enviar aplicativos Spark para Clusters de Big Data do SQL Server.

Os comandos da CLI azdata bdc spark de Dados do Azure exibem todos os recursos dos Clusters de Big Data do SQL Server Spark na linha de comando. Este artigo se concentra no envio de trabalho. Mas azdata bdc spark também dá suporte a modos interativos para Python, Scala, SQL e R por meio do azdata bdc spark session comando.

Se você precisar de integração direta com uma API REST, use chamadas padrão do Livy para enviar trabalhos. Este artigo usa a curl ferramenta de linha de comando nos exemplos do Livy para executar a chamada à API REST. Para obter um exemplo detalhado que mostra como interagir com o ponto de extremidade do Spark Livy usando o código Python, consulte Usar o Spark do ponto de extremidade Livy no GitHub.

ETL simples que usa Clusters de Big Data Spark

Esse aplicativo ETL (extração, transformação e carga) segue um padrão comum de engenharia de dados. Ele carrega dados tabulares de um caminho de zona de destino do HDFS (Sistema de Arquivos Distribuído do Apache Hadoop). Em seguida, ele usa um formato de tabela para gravar em um caminho de zona processado pelo HDFS.

Baixe o conjunto de dados do aplicativo de exemplo. Em seguida, crie aplicativos PySpark usando PySpark, Spark Scala ou Spark SQL.

Nas seções a seguir, você encontrará exercícios de exemplo para cada solução. Selecione a guia para sua plataforma. Você executará o aplicativo usando azdata ou curl.

Este exemplo usa o aplicativo PySpark a seguir. Ele é salvo como um arquivo Python chamado parquet_etl_sample.py no computador local.

from pyspark.sql import SparkSession

spark = SparkSession.builder.getOrCreate()

# Read clickstream_data from storage pool HDFS into a Spark data frame. Applies column renames.
df = spark.read.option("inferSchema", "true").csv('/securelake/landing/criteo/test.txt', sep='\t', 
    header=False).toDF("feat1","feat2","feat3","feat4","feat5","feat6","feat7","feat8",
    "feat9","feat10","feat11","feat12","feat13","catfeat1","catfeat2","catfeat3","catfeat4",
    "catfeat5","catfeat6","catfeat7","catfeat8","catfeat9","catfeat10","catfeat11","catfeat12",
    "catfeat13","catfeat14","catfeat15","catfeat16","catfeat17","catfeat18","catfeat19",
    "catfeat20","catfeat21","catfeat22","catfeat23","catfeat24","catfeat25","catfeat26")

# Print the data frame inferred schema
df.printSchema()

tot_rows = df.count()
print("Number of rows:", tot_rows)

# Drop the managed table
spark.sql("DROP TABLE dl_clickstream")

# Write data frame to HDFS managed table by using optimized Delta Lake table format
df.write.format("parquet").mode("overwrite").saveAsTable("dl_clickstream")

print("Sample ETL pipeline completed")

Copiar o aplicativo PySpark para o HDFS

Armazene o aplicativo no HDFS para que o cluster possa acessá-lo para execução. Como prática recomendada, padronizar e controlar os locais do aplicativo dentro do cluster para simplificar a administração.

Neste caso de uso de exemplo, todos os aplicativos de pipeline ETL são armazenados no caminho hdfs:/apps/ETL-Pipelines . O aplicativo de exemplo é armazenado em hdfs:/apps/ETL-Pipelines/parquet_etl_sample.py.

Execute o comando a seguir para carregar parquet_etl_sample.py do computador de preparo ou desenvolvimento local para o cluster HDFS.

azdata bdc hdfs cp --from-path parquet_etl_sample.py  --to-path "hdfs:/apps/ETL-Pipelines/parquet_etl_sample.py"

Executar o aplicativo Spark

Use o comando a seguir para enviar o aplicativo aos Clusters de Big Data do SQL Server Spark para execução.

O azdata comando executa o aplicativo usando parâmetros normalmente especificados. Para obter opções de parâmetro completas para azdata bdc spark batch create, consulte azdata bdc spark.

Este aplicativo requer o spark.sql.legacy.allowCreatingManagedTableUsingNonemptyLocation parâmetro de configuração. Portanto, o comando usa a opção --config . Essa configuração mostra como passar configurações para a sessão do Spark.

Você pode usar a opção --config para especificar vários parâmetros de configuração. Você também pode especificá-los dentro da sessão do aplicativo definindo a configuração no SparkSession objeto.

azdata bdc spark batch create -f hdfs:/apps/ETL-Pipelines/parquet_etl_sample.py \
--config '{"spark.sql.legacy.allowCreatingManagedTableUsingNonemptyLocation":"true"}' \
-n MyETLPipelinePySpark --executor-count 2 --executor-cores 2 --executor-memory 1664m

Warning

O parâmetro "name" ou "n" para o nome do lote deve ser exclusivo sempre que um novo lote é criado.

Monitorar trabalhos do Spark

Os azdata bdc spark batch comandos fornecem ações de gerenciamento para trabalhos em lote do Spark.

Para listar todos os trabalhos em execução, execute o comando a seguir.

  • O comando azdata:

    azdata bdc spark batch list -o table
    
  • O curl comando, usando Livy:

    curl -k -u <USER>:<PASSWORD> -X POST <LIVY_ENDPOINT>/batches
    

Para obter informações de um lote do Spark com a ID fornecida, execute o comando a seguir. O batch id é retornado de spark batch create.

  • O comando azdata:

    azdata bdc spark batch info --batch-id 0
    
  • O curl comando, usando Livy:

    curl -k -u <USER>:<PASSWORD> -X POST <LIVY_ENDPOINT>/batches/<BATCH_ID>
    

Para obter informações de estado para um lote do Spark com a ID fornecida, execute o comando a seguir.

  • O comando azdata:

    azdata bdc spark batch state --batch-id 0
    
  • O curl comando, usando Livy:

    curl -k -u <USER>:<PASSWORD> -X POST <LIVY_ENDPOINT>/batches/<BATCH_ID>/state
    

Para obter os logs de um lote do Spark com a ID fornecida, execute o comando a seguir.

  • O comando azdata:

    azdata bdc spark batch log --batch-id 0
    
  • O curl comando, usando Livy:

    curl -k -u <USER>:<PASSWORD> -X POST <LIVY_ENDPOINT>/batches/<BATCH_ID>/log
    

Next steps

Para obter informações sobre como solucionar problemas de código do Spark, consulte Solucionar problemas de um notebook PySpark.

O código de exemplo abrangente do Spark está disponível em exemplos do Spark de Clusters de Big Data do SQL Server no GitHub.

Para obter mais informações sobre os Clusters de Big Data do SQL Server e os cenários relacionados, confira Clusters de Big Data do SQL Server.