Utilisez l'éditeur SQL intégré d'EMR Serverless Spark pour écrire et exécuter des tâches Spark SQL de manière interactive. Une fois la tâche terminée, accédez à l'interface utilisateur Spark (Spark UI) pour inspecter l'état d'exécution, l'utilisation des ressources et les journaux.
Prérequis
Avant de commencer, assurez-vous de disposer des éléments suivants :
Un espace de travail. Consultez la rubrique Créer un espace de travail.
Une instance de session SQL. Consultez la rubrique Gérer les sessions SQL.
Créer une tâche Spark SQL
Les paramètres du catalogue DLF sont chargés lors de l'initialisation de SparkSession. La définition dynamique des paramètres liés au catalogue, tels que spark.sql.catalog.dlf.warehouse dans le code PySpark via spark.conf.set() n'a aucun effet. Pour configurer correctement ces paramètres, spécifiez-les comme paramètres de démarrage lors de la soumission de la tâche. Par exemple, ajoutez spark.sql.catalog.dlf.warehouse=oss://your-bucket/warehouse-path dans la section Configuration de la console EMR Serverless Spark ou en utilisant le paramètre --conf dans la CLI.
-
Accédez à la page de développement.
Connectez-vous à la console EMR.
Dans le volet de navigation de gauche, choisissez EMR Serverless \> Spark.
Sur la page Spark, cliquez sur le nom de l'espace de travail cible.
Sur la page EMR Serverless Spark, cliquez sur Development dans le volet de navigation de gauche.
-
Créez une tâche.
Sous l'onglet Development, cliquez sur l'icône
.Dans la boîte de dialogue, saisissez un Name, définissez le type sur SparkSQL et cliquez sur OK.
Dans le coin supérieur droit, sélectionnez un catalogue de données, une base de données et une instance de session SQL en cours d'exécution. Pour créer une nouvelle instance de session SQL, sélectionnez Connect to SQL Session dans la liste déroulante. Consultez la rubrique Gérer les sessions SQL pour plus de détails.
-
Saisissez les instructions SQL dans l'éditeur.
Exemple 1 : Opérations SQL de base
Créez une base de données, basculez vers celle-ci, créez une table, insérez des lignes et interrogez les données.
create DATABASE test_sql; use test_sql; CREATE TABLE IF NOT EXISTS my_table (id INT, name STRING); INSERT INTO my_table VALUES(1, 'Alice'),(2, 'Bob'); SELECT * FROM my_table WHERE id > 1;Les résultats s'affichent dans le panneau de sortie sous l'éditeur.
#
id
name
1
2
Bob
Exemple 2 : Table externe basée sur CSV
Créez une table externe adossée à un fichier CSV dans Object Storage Service (OSS) et exécutez une requête analytique. Remplacez
oss://<bucketname>/user/par le chemin réel de votre bucket.-
Créez la table externe. Définissez une table nommée
ordersavec les champs suivants :order_id: ID de la commande.order_date: Horodatage de la commande, par exemple'2025-07-01 10:00:00'.order_category: Catégorie du produit, par exemple'Electronics'ou'Apparel'.order_revenue: Montant de la commande.
CREATE TABLE orders ( order_id STRING, -- Order ID order_date STRING, -- Order timestamp order_category STRING, -- Product category order_revenue DOUBLE -- Order amount ) USING CSV OPTIONS ( path 'oss://<bucketname>/user/', header 'true' ); -
Insérez des données de test.
INSERT OVERWRITE TABLE orders VALUES ('o1', '2025-07-01 10:00:00', 'Electronics', 5999.0), ('o2', '2025-07-02 11:30:00', 'Apparel', 299.0), ('o3', '2025-07-03 14:45:00', 'Electronics', 899.0), ('o4', '2025-07-04 09:15:00', 'Home Goods', 99.0), ('o5', '2025-07-05 16:20:00', 'Electronics', 1999.0), ('o6', '2025-07-06 08:00:00', 'Apparel', 199.0), ('o7', '2025-07-07 12:10:00', 'Electronics', 799.0), ('o8', '2025-07-08 18:30:00', 'Home Goods', 59.0), ('o9', '2025-07-09 20:00:00', 'Electronics', 399.0), ('o10', '2025-07-10 07:45:00', 'Apparel', 599.0), ('o11', '2025-07-11 09:00:00', 'Electronics', 1299.0), ('o12', '2025-07-12 13:20:00', 'Home Goods', 159.0), ('o13', '2025-07-13 17:15:00', 'Apparel', 499.0), ('o14', '2025-07-14 21:30:00', 'Electronics', 999.0), ('o15', '2025-07-15 06:10:00', 'Home Goods', 299.0); -
Exécutez une requête analytique. La requête suivante renvoie les performances de vente par catégorie sur une période de 15 jours — nombre de commandes, valeur marchande brute totale (GMV), montant moyen de la commande et date de la dernière commande — pour les catégories dont le revenu total est supérieur à 1 000, triées par GMV décroissant.
SELECT order_category, COUNT(order_id) AS order_count, SUM(order_revenue) AS gmv, AVG(order_revenue) AS avg_order_amount, MAX(order_date) AS latest_order_date FROM orders WHERE CAST(order_date AS TIMESTAMP) BETWEEN '2025-07-01' AND '2025-07-15' GROUP BY order_category HAVING SUM(order_revenue) > 1000 ORDER BY gmv DESC, order_category ASC;
Exemple 3 : Créer une table Hive Parquet (table de format DLF)
Par défaut, EMR Serverless Spark utilise Apache Paimon comme format de table. Pour créer une table Hive Parquet à la place, vous devez remplacer les paramètres par défaut dans les paramètres de démarrage de la tâche.
Paramètres de démarrage
Avant de créer une table Hive Parquet, ajoutez les paramètres de configuration Spark suivants pour empêcher le catalogue Paimon d'intercepter la création de la table :
spark.sql.catalog.spark_catalog=org.apache.spark.sql.hive.HiveCatalog spark.sql.defaultFileFormat=parquetVous pouvez ajouter ces paramètres dans la section Configuration de la console EMR Serverless Spark ou en utilisant le paramètre
--confdans la CLI.Méthode SQL
Utilisez la syntaxe
CREATE TABLE ... USING PARQUETpour créer une table Hive Parquet. N'utilisez pasSTORED AS PARQUET.CREATE TABLE my_parquet_table ( id INT, name STRING, created_at TIMESTAMP ) USING PARQUET;Méthode API DataFrame
Utilisez
df.write.format("parquet").saveAsTable(...)pour écrire les données sous forme de table Hive Parquet.df.write.format("parquet").saveAsTable("my_parquet_table")RemarqueSi votre espace de travail est lié à un catalogue DLF, nous vous recommandons de créer des tables à l'aide de sessions Spark ou d'instructions SQL afin de garantir la cohérence avec le catalogue de métadonnées.
-
(Facultatif) Cliquez sur l'onglet Version Information à droite pour comparer les versions. L'éditeur met en évidence les différences de code SQL entre les versions.
-
Exécutez et publiez la tâche.
Cliquez sur Run. Les résultats apparaissent sous l'onglet Execution Results. En cas d'erreur, vérifiez l'onglet Execution Issues. Le panneau d'historique d'exécution à droite affiche les enregistrements des trois derniers jours.
Après avoir confirmé que la tâche s'exécute correctement, cliquez sur Publish dans le coin supérieur droit.
Dans la boîte de dialogue Publish, saisissez les notes de version et cliquez sur OK.
Accéder à l'interface utilisateur Spark (Spark UI)
L'interface utilisateur Spark (Spark UI) affiche l'état d'exécution des tâches, l'utilisation des ressources et les informations des journaux, ce qui s'avère utile pour analyser et optimiser vos tâches Spark.
Accès depuis les résultats d'exécution
Cette méthode nécessite les versions de moteur suivantes ou ultérieures : esr-4.2.0 (esr-4.x), esr-3.2.0 (esr-3.x) ou esr-2.6.0 (esr-2.x).
Une fois l'instruction SQL exécutée, cliquez sur Spark UI en bas de l'onglet Execution Results.
Accès depuis l'instance de session
Une fois l'instruction SQL exécutée, localisez l'instance de session et choisissez
\> Spark UI.
Raccourcis clavier
|
Fonction |
Windows |
Mac |
Description |
|
Exécuter le script actuel |
|
|
Exécute toutes les instructions SQL ou uniquement la sélection mise en surbrillance. Équivalent à un clic sur Run. |
|
Formater le SQL |
|
|
Formate la structure SQL : normalise l'indentation, les sauts de ligne et la casse des mots-clés. |
|
Rechercher du texte |
|
|
Recherche des mots-clés dans le script actuel. |
|
Enregistrer la tâche |
|
|
Enregistre la tâche non publiée actuelle pour éviter toute perte de données. |
Étapes suivantes
Planifiez l'exécution périodique de la tâche en créant un workflow. Consultez la rubrique Créer un workflow. Pour un exemple complet de planification, consultez la rubrique Démarrage rapide pour le développement Spark SQL.
FAQ
Est-il possible de dépasser la limite de téléchargement de 10 000 lignes pour les résultats de requête ?
Non. Le téléchargement des résultats de requête dans le développement de données EMR Serverless Spark est soumis à une limite stricte de la plateforme. Vous pouvez télécharger un maximum de 10 000 lignes et la taille totale du fichier ne peut pas dépasser 10 Mo. Cette limite ne peut pas être modifiée via la configuration.
Pour exporter des ensembles de données plus volumineux, utilisez l'une des méthodes suivantes :
Soumettez une tâche à l'aide de spark-submit et écrivez les résultats dans Object Storage Service (OSS) ou Hadoop Distributed File System (HDFS).
Utilisez une tâche de synchronisation hors ligne dans DataWorks pour exporter les données.
EMR Serverless Spark propose-t-il des API publiques pour Spark History ?
Oui. EMR Serverless Spark fournit des API publiques. Pour la liste complète des opérations d'API disponibles, consultez la rubrique Présentation des API.