Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
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
curlaplicativo 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 tableO
curlcomando, 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 0O
curlcomando, 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 0O
curlcomando, 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 0O
curlcomando, 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.