Partager via


Envoyer des travaux Spark à l’aide d’outils en ligne de commande

S’applique à : SQL Server 2019 (15.x)

Cet article fournit des conseils sur l’utilisation d’outils en ligne de commande pour exécuter des travaux Spark sur des clusters Big Data SQL Server.

Important

Les clusters Big Data Microsoft SQL Server 2019 sont mis hors service. La prise en charge des clusters Big Data SQL Server 2019 a pris fin le 28 février 2025. Pour plus d’informations, consultez le billet de blog d’annonce et les options Big Data sur la plateforme Microsoft SQL Server.

Prerequisites

Travaux Spark qui utilisent azdata ou Livy

Cet article fournit des exemples d’utilisation de modèles de ligne de commande pour envoyer des applications Spark à des clusters Big Data SQL Server.

Les commandes Azure Data CLI azdata bdc spark affichent toutes les fonctionnalités de SQL Server Big Data Clusters Spark sur la ligne de commande. Cet article se concentre sur la soumission de travaux. Mais azdata bdc spark prend également en charge les modes interactifs pour Python, Scala, SQL et R via la azdata bdc spark session commande.

Si vous avez besoin d’une intégration directe avec une API REST, utilisez des appels Livy standard pour envoyer des travaux. Cet article utilise l’outil curl en ligne de commande dans les exemples Livy pour exécuter l’appel d’API REST. Pour obtenir un exemple détaillé montrant comment interagir avec le point de terminaison Spark Livy à l’aide du code Python, consultez Utiliser Spark à partir du point de terminaison Livy sur GitHub.

ETL simple qui utilise Des clusters Big Data Spark

Cette application d’extraction, de transformation et de chargement (ETL) suit un modèle d’ingénierie des données commun. Il charge des données tabulaires à partir d’un chemin d’atterrissage hdFS (Apache Hadoop Distributed File System). Il utilise ensuite un format de tableau pour écrire dans un chemin de zone traité par HDFS.

Téléchargez le jeu de données de l’exemple d’application. Créez ensuite des applications PySpark à l’aide de PySpark, Spark Scala ou Spark SQL.

Dans les sections suivantes, vous trouverez des exemples d’exercices pour chaque solution. Sélectionnez l’onglet de votre plateforme. Vous allez exécuter l’application à l’aide azdata ou curl.

Cet exemple utilise l’application PySpark suivante. Il est enregistré sous la forme d’un fichier Python nommé parquet_etl_sample.py sur l’ordinateur 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")

Copier l’application PySpark dans HDFS

Stockez l’application dans HDFS afin que le cluster puisse y accéder pour l’exécution. En guise de meilleure pratique, standardisez et régissez les emplacements d’application au sein du cluster pour simplifier l’administration.

Dans cet exemple d’utilisation, toutes les applications de pipeline ETL sont stockées sur le chemin hdfs :/apps/ETL-Pipelines . L’exemple d’application est stocké sur hdfs :/apps/ETL-Pipelines/parquet_etl_sample.py.

Exécutez la commande suivante pour charger parquet_etl_sample.py à partir de l’ordinateur de développement local ou de préproduction sur le cluster HDFS.

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

Exécuter l’application Spark

Utilisez la commande suivante pour envoyer l’application à SQL Server Big Data Clusters Spark pour l’exécution.

La azdata commande exécute l’application à l’aide de paramètres couramment spécifiés. Pour obtenir les options de paramètre complètes pour azdata bdc spark batch create, consultez azdata bdc spark.

Cette application nécessite le spark.sql.legacy.allowCreatingManagedTableUsingNonemptyLocation paramètre de configuration. Par conséquent, la commande utilise l’option --config . Cette configuration montre comment transmettre des configurations à la session Spark.

Vous pouvez utiliser l’option --config pour spécifier plusieurs paramètres de configuration. Vous pouvez également les spécifier à l’intérieur de la session d’application en définissant la configuration dans l’objet SparkSession .

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

Le paramètre « name » ou « n » pour le nom de lot doit être unique chaque fois qu’un nouveau lot est créé.

Surveiller les travaux Spark

Les azdata bdc spark batch commandes fournissent des actions de gestion pour les travaux de traitement par lots Spark.

Pour répertorier tous les travaux en cours d’exécution, exécutez la commande suivante.

  • La commande azdata :

    azdata bdc spark batch list -o table
    
  • Commande curl , à l’aide de Livy :

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

Pour obtenir des informations sur un lot Spark avec l’ID donné, exécutez la commande suivante. Le batch id résultat est retourné par spark batch create.

  • La commande azdata :

    azdata bdc spark batch info --batch-id 0
    
  • Commande curl , à l’aide de Livy :

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

Pour obtenir des informations d’état pour un lot Spark avec l’ID donné, exécutez la commande suivante.

  • La commande azdata :

    azdata bdc spark batch state --batch-id 0
    
  • Commande curl , à l’aide de Livy :

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

Pour obtenir les journaux d’activité d’un lot Spark avec l’ID donné, exécutez la commande suivante.

  • La commande azdata :

    azdata bdc spark batch log --batch-id 0
    
  • Commande curl , à l’aide de Livy :

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

Next steps

Pour plus d’informations sur la résolution des problèmes de code Spark, consultez Résoudre les problèmes d’un notebook PySpark.

Un exemple de code Spark complet est disponible sur des exemples Spark de clusters Big Data SQL Server sur GitHub.

Pour plus d’informations sur Clusters Big Data SQL Server et les scénarios associés, consultez Clusters Big Data SQL Server.