Créez un nœud E-MapReduce (EMR) Spark SQL pour traiter des données structurées à l'aide d'un moteur de requête SQL distribué, ce qui améliore l'efficacité d'exécution.
Prérequis
-
Avant de commencer le développement du nœud, si vous avez besoin d'un environnement de composant personnalisé, créez une image personnalisée basée sur l'image officielle
dataworks_emr_base_task_pod, puis utilisez-la dans Data Studio. Pour plus d'informations, consultez les rubriques Créer une image personnalisée et Utiliser des images dans le développement de données.Par exemple, lors de la création d'une image personnalisée, vous pouvez remplacer les packages JAR Spark ou ajouter des dépendances vers des
libraries, desfilesou desJAR packagesspécifiques. Créez un cluster Alibaba Cloud EMR et enregistrez-le dans DataWorks. Pour plus d'informations, consultez la rubrique New Data Studio : Attacher une ressource de calcul EMR.
-
(Facultatif, pour les utilisateurs RAM) L'utilisateur Resource Access Management (RAM) chargé du développement des tâches doit être ajouté à l'espace de travail et se voir attribuer le rôle Development ou Workspace Administrator (ce rôle inclut des autorisations étendues et doit être accordé avec prudence). Pour plus d'informations, consultez la rubrique Ajouter des membres à l'espace de travail.
Si vous utilisez un compte racine, ignorez cette étape.
Utilisez une image personnalisée Custom image pour construire un environnement de développement spécifique à votre tâche.
Limitations
Les nœuds EMR Shell s'exécutent uniquement sur un groupe de ressources serverless (recommandé) ou sur un groupe de ressources exclusif pour la planification. L'utilisation d'une image personnalisée pour le développement de données nécessite un groupe de ressources serverless.
-
Pour gérer les métadonnées d'un cluster DataLake ou personnalisé dans DataWorks, configurez d'abord EMR-HOOK sur le cluster. Pour plus d'informations, consultez la rubrique Configurer EMR-HOOK pour Spark SQL.
RemarqueSans configuration d'EMR-HOOK sur le cluster, vous ne pouvez pas afficher les métadonnées en temps réel, générer des journaux d'audit, consulter la lignée des données ni effectuer des tâches de gouvernance liées à EMR dans DataWorks.
Les clusters EMR on ACK Spark ne prennent pas en charge l'affichage de la lignée des données. Les clusters EMR Serverless Spark prennent en charge l'affichage de la lignée des données.
L'enregistrement de fonctions via l'interface utilisateur est pris en charge sur les clusters DataLake et personnalisés, mais pas sur les clusters EMR on ACK Spark ou EMR Serverless Spark.
Remarques
Si vous avez activé le contrôle d'accès Ranger pour Spark dans le cluster EMR associé à l'espace de travail actuel :
Les tâches Spark utilisant l'image par défaut prennent automatiquement en charge cette fonctionnalité.
Pour exécuter une tâche Spark avec une image personnalisée, soumettez un ticket au support technique afin de demander une mise à niveau de l'image.
Procédure
-
Dans l'onglet de configuration du nœud EMR Spark SQL, effectuez les opérations de développement suivantes.
Développer le code SQL
Rédigez le code de votre tâche dans l'éditeur SQL. Définissez les variables au format ${nom_variable} et attribuez-leur des valeurs dans la section Scheduling Settings > Scheduling Parameters située à droite de l'onglet de configuration du nœud, afin de transmettre dynamiquement des paramètres aux tâches planifiées. Pour plus d'informations, consultez la rubrique Sources et expressions des paramètres de planification. Exemple :
SHOW TABLES; -- Define a variable named var by using ${var}. If you set this variable to ${yyyymmdd}, you can create a table with the business date as a suffix. CREATE TABLE IF NOT EXISTS userinfo_new_${var} ( ip STRING COMMENT'IP address', uid STRING COMMENT'User ID' )PARTITIONED BY( dt STRING ); -- Can be used with scheduling parameters.(Facultatif) Configurer les paramètres du nœud EMR
Dans la section du volet Run Configuration, configurez les paramètres suivants :
Spark parameter : paramètres de propriété intégrés à Spark. Pour plus d'informations, consultez la documentation open source Spark configuration. Vous pouvez charger directement un modèle de configuration Spark depuis Serverless Spark, ce qui simplifie la configuration et garantit la cohérence.
DataWorks parameters : les paramètres avancés disponibles varient selon le type de cluster EMR, comme décrit dans le tableau suivant.
Cluster DataLake/Cluster personnalisé : EMR on ECS
Paramètre avancé
Description
queue
File d'attente de planification pour la soumission des jobs. La valeur par défaut est default. Pour plus d'informations sur EMR YARN, consultez Configurations de base des files d'attente.
priority
Priorité. Valeur par défaut : 1.
FLOW_SKIP_SQL_ANALYZE
Mode d'exécution des instructions SQL. Valeurs possibles :
-
true: plusieurs instructions SQL sont exécutées simultanément. -
false(par défaut) : une seule instruction SQL est exécutée à la fois.
RemarqueCe paramètre est pris en charge uniquement pour les exécutions de test dans l'environnement de développement de données.
ENABLE_SPARKSQL_JDBC
Méthode utilisée pour soumettre le code SQL. Valeurs possibles :
-
true: le code SQL est soumis via JDBC. Si le cluster EMR ne dispose pas du service Kyuubi, le code SQL est soumis à Spark Thrift-Server. Si le cluster EMR dispose du service Kyuubi, le code SQL est soumis à Kyuubi via JDBC, et les paramètres Spark personnalisés sont pris en charge.Les deux méthodes prennent en charge la lignée des métadonnées. Toutefois, les tâches soumises à Thrift-Server ne disposent pas des informations de sortie pour les tâches de nœud correspondantes dans les métadonnées.
-
false(par défaut) : le code SQL est soumis à l'aide de la méthode de cluster Spark-submit. Dans ce mode, Spark2 et Spark3 prennent tous deux en charge la lignée des métadonnées et les informations de sortie. Les paramètres Spark personnalisés sont également pris en charge.Remarque-
La méthode de cluster Spark-submit crée par défaut des fichiers et répertoires temporaires dans le répertoire
/tmpdu HDFS du cluster EMR. Assurez-vous que le répertoire dispose des autorisations de lecture et d'écriture. -
Lorsque vous utilisez la méthode de cluster Spark-submit, vous pouvez ajouter directement des paramètres SparkConf personnalisés dans les configurations avancées. DataWorks ajoute automatiquement les nouveaux paramètres à la commande lors de la soumission du code. Exemple :
"spark.driver.memory" : "2g".
-
DATAWORKS_SESSION_DISABLE
Ce paramètre s'applique aux exécutions de test dans l'environnement de développement. Valeurs possibles :
-
true: une nouvelle connexion JDBC est créée à chaque exécution d'une instruction SQL. -
false(par défaut) : la même connexion JDBC est réutilisée lors de l'exécution de différentes instructions SQL au sein d'un même nœud.
RemarqueLorsque ce paramètre est défini sur
false, l'yarn applicationIdHive n'est pas imprimé. Pour imprimer l'yarn applicationId, définissez ce paramètre surtrue.Others
Paramètres Spark Configuration personnalisés. Ajoutez des paramètres de propriété spécifiques à Spark.
Format de configuration :
"spark.eventLog.enabled" : false,"spark.eventLog.memory" : "12g". DataWorks ajoute automatiquement les paramètres au code soumis au cluster EMR au format :--conf key=value. Pour plus d'informations sur les configurations de paramètres, consultez la rubrique Configurer les paramètres Spark globaux.Remarque-
DataWorks vous permet de configurer des paramètres Spark globaux au niveau de l'espace de travail pour chaque module DataWorks. Vous pouvez spécifier si la priorité des paramètres Spark globaux est supérieure à celle des paramètres Spark configurés au sein d'un module spécifique.
-
Pour activer le contrôle d'accès Ranger, ajoutez
spark.hadoop.fs.oss.authorization.method=rangeraux configurations des paramètres Spark globaux afin de garantir l'application du contrôle d'accès Ranger.
Cluster EMR Serverless Spark
Pour les paramètres associés, consultez la rubrique Paramètres des tâches Spark.
Paramètre avancé
Description
FLOW_SKIP_SQL_ANALYZE
Mode d'exécution des instructions SQL. Valeurs possibles :
-
true: plusieurs instructions SQL sont exécutées simultanément. -
false(par défaut) : une seule instruction SQL est exécutée à la fois.
RemarqueCe paramètre est pris en charge uniquement pour les exécutions de test dans l'environnement de développement de données.
DATAWORKS_SESSION_DISABLE
Méthode de soumission des tâches. Lors du développement de données, les tâches sont soumises à SQL Compute pour exécution par défaut. Vous pouvez utiliser ce paramètre pour spécifier si la tâche est exécutée via SQL Compute ou soumise à une file d'attente pour exécution.
-
true: la tâche est soumise à une file d'attente pour exécution. Par défaut, la file d'attente par défaut spécifiée lors de l'association de la ressource de calcul est utilisée. Lorsque DATAWORKS_SESSION_DISABLE est défini sur true, vous pouvez configurer le paramètreSERVERLESS_QUEUE_NAMEpour spécifier la file d'attente à laquelle les tâches sont soumises lors du développement de données. -
false(par défaut) : la tâche est soumise à SQL Compute pour exécution.RemarqueCe paramètre prend effet uniquement lors de l'exécution en développement de données, et non lors des exécutions planifiées.
SERVERLESS_RELEASE_VERSION
Version du moteur Spark. Par défaut, la Default Engine Version configurée dans les paramètres du cluster sous Compute Resource dans Management Center est utilisée. Pour définir une version de moteur différente pour une tâche spécifique, configurez ce paramètre.
RemarqueLe paramètre
SERVERLESS_RELEASE_VERSIONdans les configurations avancées prend effet uniquement lorsque le SQL Compute (session) spécifié pour le cluster enregistré est à l'état arrêté dans la console EMR Serverless Spark.SERVERLESS_QUEUE_NAME
File d'attente de ressources à laquelle les tâches sont soumises. Lorsqu'une tâche est configurée pour être soumise à une file d'attente pour exécution, la Default Resource Queue configurée dans les paramètres du cluster sous Clusters dans Management Center est utilisée par défaut. Si vous avez des exigences en matière d'isolation et de gestion des ressources, vous pouvez ajouter des files d'attente. Pour plus d'informations, consultez la rubrique Gérer les files d'attente de ressources.
Méthodes de configuration :
-
Spécifiez la file d'attente de ressources pour la soumission des tâches en configurant les paramètres du nœud.
-
Spécifiez la file d'attente de ressources pour la soumission des tâches en configurant les paramètres Spark globaux.
Remarque-
Le paramètre
SERVERLESS_QUEUE_NAMEdans les configurations avancées prend effet uniquement lorsque le SQL Compute (session) spécifié pour le cluster enregistré est à l'état arrêté dans la console EMR Serverless Spark. -
Lors de l'exécution en développement de données : vous devez d'abord définir
DATAWORKS_SESSION_DISABLEsurtrueafin que les tâches soient soumises à une file d'attente pour exécution. Ce n'est qu'alors que le paramètreSERVERLESS_QUEUE_NAMEprend effet pour spécifier la file d'attente des tâches. -
Lors de l'exécution planifiée dans Operation Center : les tâches sont forcées d'être soumises à une file d'attente pour exécution et ne peuvent pas être soumises à SQL Compute.
SERVERLESS_SQL_COMPUTE
SQL Compute (session SQL) à utiliser. Par défaut, le Default SQL Compute configuré dans les paramètres du cluster sous Compute Resource dans Management Center est utilisé. Pour définir une session SQL différente pour une tâche spécifique, configurez ce paramètre. Pour savoir comment créer et gérer des sessions SQL, consultez la rubrique Gérer les sessions SQL Compute.
Others
Paramètres Spark Configuration personnalisés. Ajoutez des paramètres de propriété spécifiques à Spark.
Format de configuration :
"spark.eventLog.enabled": false. DataWorks ajoute automatiquement les paramètres au code soumis au cluster EMR au format :--conf key=value.RemarqueDataWorks vous permet de configurer des paramètres Spark globaux au niveau de l'espace de travail pour chaque module DataWorks. Vous pouvez spécifier si la priorité des paramètres Spark globaux est supérieure à celle des paramètres Spark configurés au sein d'un module spécifique. Pour plus d'informations sur la configuration des paramètres Spark globaux, consultez la rubrique Configurer les paramètres Spark globaux.
Cluster Spark : EMR on ACK
Paramètre avancé
Description
FLOW_SKIP_SQL_ANALYZE
Mode d'exécution des instructions SQL. Valeurs possibles :
-
true: plusieurs instructions SQL sont exécutées simultanément. -
false(par défaut) : une seule instruction SQL est exécutée à la fois.
RemarqueCe paramètre est pris en charge uniquement pour les exécutions de test dans l'environnement de développement de données.
Others
Paramètres Spark Configuration personnalisés. Ajoutez des paramètres de propriété spécifiques à Spark.
Format de configuration :
"spark.eventLog.enabled": false. DataWorks ajoute automatiquement les paramètres au code soumis au cluster EMR au format :--conf key=value.RemarqueDataWorks vous permet de configurer des paramètres Spark globaux au niveau de l'espace de travail pour chaque module DataWorks. Vous pouvez spécifier si la priorité des paramètres Spark globaux est supérieure à celle des paramètres Spark configurés au sein d'un module spécifique. Pour plus d'informations sur la configuration des paramètres Spark globaux, consultez la rubrique Configurer les paramètres Spark globaux.
Cluster Hadoop : EMR on ECS
Paramètre avancé
Description
queue
File d'attente de planification pour la soumission des jobs. La valeur par défaut est
default. Pour plus d'informations sur EMR YARN, consultez Configurations de base des files d'attente.priority
Priorité. Valeur par défaut : 1.
FLOW_SKIP_SQL_ANALYZE
Mode d'exécution des instructions SQL. Valeurs possibles :
-
true: plusieurs instructions SQL sont exécutées simultanément. -
false(par défaut) : une seule instruction SQL est exécutée à la fois.
RemarqueCe paramètre est pris en charge uniquement pour les exécutions de test dans l'environnement de développement de données.
USE_GATEWAY
Indique si les jobs doivent être soumis via un cluster Gateway. Valeurs possibles :
-
true: les jobs sont soumis via un cluster Gateway. -
false(par défaut) : les jobs ne sont pas soumis via un cluster Gateway. Ils sont soumis par défaut au nœud principal.
RemarqueSi le cluster du nœud actuel n'est pas associé à un cluster Gateway, la définition manuelle de ce paramètre sur
trueentraîne l'échec des soumissions de jobs EMR ultérieures.Others
Paramètres Spark Configuration personnalisés. Ajoutez des paramètres de propriété spécifiques à Spark.
Format de configuration :
"spark.eventLog.enabled": false. DataWorks ajoute automatiquement les paramètres au code soumis au cluster EMR au format :--conf key=value. Pour plus d'informations sur les configurations de paramètres, consultez la rubrique Configurer les paramètres Spark globaux.Remarque-
DataWorks vous permet de configurer des paramètres Spark globaux au niveau de l'espace de travail pour chaque module DataWorks. Vous pouvez spécifier si la priorité des paramètres Spark globaux est supérieure à celle des paramètres Spark configurés au sein d'un module spécifique.
-
Pour activer le contrôle d'accès Ranger, ajoutez
spark.hadoop.fs.oss.authorization.method=rangeraux configurations des paramètres Spark globaux afin de garantir l'application du contrôle d'accès Ranger.
Exécuter une tâche SQL
-
Dans Run Configuration, sélectionnez et configurez la Compute Resource et le Resource Group.
RemarqueVous pouvez également configurer les CUs for Scheduling en fonction des ressources requises pour l'exécution de la tâche. La valeur CU par défaut est
0.25.Pour accéder aux sources de données via Internet ou un VPC, utilisez un groupe de ressources pour la planification ayant réussi le test de connectivité avec la source de données. Pour plus d'informations, consultez la rubrique Configurer la connectivité réseau.
Dans la boîte de dialogue des paramètres de la barre d'outils, sélectionnez la source de données correspondante et cliquez sur Run pour exécuter la tâche SQL.
(Facultatif) Configurer les paramètres d'assignation
Pour transmettre les résultats de la requête de ce nœud aux nœuds en aval, accédez à la section Node Context Parameters du volet Scheduling Settings situé à droite, puis cliquez sur Add Assignment Parameter. Le système ajoute automatiquement un paramètre de sortie nommé
outputs. La valeur de ce paramètre correspond au résultat de la requête de la dernière ligne de code de ce nœud. Pour plus d'informations, consultez la rubrique Utiliser les paramètres de contexte de nœud. -
Pour exécuter la tâche de nœud périodiquement, configurez les informations de planification en fonction de vos besoins métier. Pour plus d'informations, consultez la rubrique Configurer les paramètres de planification.
RemarqueSi vous devez personnaliser l'environnement des composants, vous pouvez créer une image personnalisée basée sur l'image officielle
dataworks_emr_base_task_podet utiliser l'image dans le développement de données.Par exemple, lors de la création d'une image personnalisée, vous pouvez remplacer les packages JAR Spark ou dépendre de
libraries, defilesou deJAR packagesspécifiques. Une fois la tâche de nœud configurée, vous devez la déployer. Pour plus d'informations, consultez la rubrique Déployer un nœud.
Après le déploiement de la tâche, vous pouvez consulter l'état d'exécution des tâches planifiées dans Operation Center. Pour plus d'informations, consultez la rubrique Afficher les tâches planifiées.
FAQ
Lorsque vous exécutez une tâche de nœud EMR Spark SQL pendant le développement de données et souhaitez soumettre la tâche à SQL Compute pour exécution, assurez-vous que SQL Compute est dans l'état Running. Sinon, la tâche échoue. Pour vérifier l'état de SQL Compute, consultez la rubrique Gérer les sessions SQL Compute.